最近在用Ext.grid.EditorGridPanel作可编辑表格时,出现了问题。就是编辑过的列,不能再进行编辑了。
具体情形是这样的:我第一个画面有一个新建按钮,打开后是一个包含Ext.grid.EditorGridPanel的window,在window内的EditorGridPanel可新增行,我输入第一列的值,关闭window;第二次点新建按钮,打开新的包含Ext.grid.EditorGridPanel的window,新增行时,不能在第一列输值,只能在后面的几列输值。
我试了试,所有上次编辑过的列,在下次就不能编辑了。出现了可编辑表格右移的情况,希望大家帮我解决一下,谢谢了。

解决方案 »

  1.   

    没人理了。和这个贴子差不多的情况,不过我按着他的方法,还没好。
    http://www.cnblogs.com/kuailewangzi1212/archive/2008/08/01/1258439.html
      

  2.   


    第一个窗口的按钮:new Ext.Button({
    id : "newproject_button",
    text : 'New project',
    iconCls : 'c-button-add',
    width : 100,
    handler : function() {

    var newProjectWindow = new NewProjectWindow({
    id : "newProject",
    title : "New Project"
    });
    newProjectWindow.show();
    }
    })
    NewProjectWindow.js代码,即第二个窗口:var NPW_ProjectHeadPanel,NPW_ProjectActionGrid;
    var NewProjectWindow = Ext.extend(Ext.Window,{
    layout : 'fit',
    closeAction : 'close',
    autoScroll : true,
    width : 960,
    height : 500,
    constructor : function(config) {
    NewProjectWindow.superclass.constructor.apply(this,arguments);
    this.initWindow();
    }, initWindow : function() {
    NPW_ProjectHeadPanel = new CommonForm({
    height : 100,
    id : "headPanel",
    region : "north",
    layoutConfig : {
    columns : "2"
    }
    });
    var NPW_ActionItems = Ext.data.Record.create([
                                // 下面的 "name" 匹配读到的标签名称, 除了 "birthDay",它被映射到标签 "birth"
                                {name: 'items_id', type: 'int' },
                                {name: 'items_name', type: 'string'},
                                {name: 'responsibility',type:'string'},
                                {name: 'timing', type: 'date'},
                                {name: 'status', type: 'string'}
                               
                           ]);
       /* var editor = new Ext.ux.grid.RowEditor({
            saveText: 'Update'
        });*/

    NPW_ProjectActionGrid = new CommonEditorGrid({
    height : 370,
    layout : "fit",
    buttonAlign : "center",
    id : "npw_actionItemsResult",
    title : "npw_actionItemsResult",
    //plugins: [editor],
    store : new Ext.data.JsonStore({
    /*autoLoad : true,
    url : 'getRequests.do?op=get&myrequest=true',*/
    data : [],
    fields : ['items_id', 'items_name', 'responsibility','timing','status']
    //root : 'datarows'
    }),
    colModel : NPW_ActionItemsColModel,
    tbar : ["-",new Ext.Button({
    id : "newActionItems_button",
    text : 'New Action Items',
    iconCls : 'c-button-add_item',
    width : 100,
    handler : function() {
      var totalRows = NPW_ProjectActionGrid.getStore().getCount();// 获得总行数
      /* 定义一个Action items对象,这样便于我们动态的添加记录,虽然也可以设置成匿名内置对象*/
       
                    var NPW_ActionItem = new NPW_ActionItems({
                     items_id: totalRows + 1,
                     items_name: '',
                     responsibility: '',
                     timing: '',
                     status: ''
                    });
                    NPW_ProjectActionGrid.stopEditing();
                    NPW_ProjectActionGrid.getStore().insert(totalRows, NPW_ActionItem);// 插入到最后一行
                   //alert("1");
                   // alert(totalRows);
                    NPW_ProjectActionGrid.startEditing(totalRows, 1);
    }
    }),"-",new Ext.Button({
    id : "deleteActionItems_button",
    text : 'Remove Action Items',
    iconCls : 'c-button-delete_item',
    width : 100,
                handler: function(){
    NPW_ProjectActionGrid.stopEditing(false);
                    var rows = NPW_ProjectActionGrid.getSelectionModel().getSelections();
                    for(var i = 0, r; r = rows[i]; i++){
                     NPW_ProjectActionGrid.getStore().remove(r);
                    }
                }
            }),"-"]

    });
    this.formPanel = new CommonPanel({
    items : [NPW_ProjectHeadPanel,NPW_ProjectActionGrid]
    });
    this.add(this.formPanel);
    this.initForm();
    this.doLayout(true);
    },
    initForm : function(){
    this.project_id = new Ext.form.TextField({
    id : "project_id",
    name : 'project_id',
    fieldLabel : 'Project ID',
    labelStyle : "width:120px;",
    hidden : true,
    hideLabel : true,
    maxLength : 50,
    width : 625
    });
    this.project_name = new Ext.form.TextField({
    id : "project_name",
    name : "Project Name",
    allowBlank : false,
    blankText : "Please Input Project Name",
    fieldLabel : 'Project Name',
    labelStyle : "width:120px;",
    maxLength : 256,
    width : 730
    });
    this.description = new Ext.form.TextField({
    id : "description",
    name : "Description",
    allowBlank : false,
    blankText : "Please Input Description",
    fieldLabel : 'Description',
    labelStyle : "width:120px;",
    maxLength : 256,
    width : 730
    });
    this.op_sales = new Ext.form.TextField({
    id : "op_sales",
    name : "op_sales",
    allowBlank : false,
    blankText : "Please Input OP",
    fieldLabel : 'OP',
    labelStyle : "width:120px;",
    maxLength : 256,
    width : 302
    });
    this.opportunity = new Ext.form.TextField({
    id : "opportunity",
    name : "opportunity",
    allowBlank : false,
    blankText : "Please Input Opportunity",
    fieldLabel : 'Opportunity',
    labelStyle : "width:120px;",
    maxLength : 256,
    width : 301
    });
    this.savebutton = new Ext.Button({
    text : 'Save',
    minWidth : 100,
    scope : this,
    handler : this.doSave
    });
    this.cancelbutton = new Ext.Button({
    text : 'Cancel',
    minWidth : 100,
    scope : this,
    handler : this.doCancel
    });
    var fields = new Array();
    fields.push({colspan:2,items:[this.project_id]});
    fields.push({colspan:2,items:[this.project_name]});
    fields.push({colspan:2,items:[this.description]});
    fields.push({items:[this.op_sales]});
    fields.push({items:[this.opportunity]});
    NPW_ProjectHeadPanel.add(fields);
    NPW_ProjectActionGrid.addButton(this.savebutton);
    NPW_ProjectActionGrid.addButton(this.cancelbutton);
    },
    doSave : function() {},
    doCancel : function() {
    this.close();
    }

    });
      

  3.   

    你的例子跑不起来,所以没办法帮你调,我觉得可能是问题在 NPW_ActionItemsColModel
    你可以试试用这种方法有没有问题columns : [new Ext.grid.RowNumberer(),
    {
    header : 'items name',
    sortable : true,
    dataIndex : "'items_name'",
    width:180,
    editor:  new Ext.form.TextField({
    allowBlank: false
    })
    }
      

  4.   

    这个col是有的。
    var NPW_ActionItemsColModel = new Ext.grid.ColumnModel([{
    header : "ID",
    dataIndex : 'items_id',
    width : 100,
    sortable : true,
    fixed : true
    }, {
    header : "Action Items",
    dataIndex : 'items_name',
    width : 150,
    sortable : true,
    editor: new Ext.form.TextField({
            allowBlank: false
        })
    //fixed : true
    }, {
    header : "Responsibility",
    dataIndex : 'responsibility',
    width : 100,
    sortable : true,
    fixed : true,
    editor: new Ext.form.TextField({
            allowBlank: false
        })
    },{
    header : "Timing",
    dataIndex : 'timing',
    width : 100,
    sortable : true,
    fixed : true,
    editor: new Ext.form.DateField({
    format:"Y-m-d",
            allowBlank: false
        }),
        renderer:function(value){   
        if(value instanceof Date){   
            return new Date(value).format("Y-m-d");   
        }else{   
            return value;   
        }   
    }  },{
    header : "Status",
    dataIndex : 'status',
    width : 100,
    sortable : true,
    fixed : true,
    editor: new Ext.form.TextField({
            allowBlank: false
        })
    }]);
      

  5.   

    方不方便把 CommonForm, CommonEditorGrid, CommonPanel 的代码贴出来? 我这里跑不起来