最近在用Ext.grid.EditorGridPanel作可编辑表格时,出现了问题。就是编辑过的列,不能再进行编辑了。
具体情形是这样的:我第一个画面有一个新建按钮,打开后是一个包含Ext.grid.EditorGridPanel的window,在window内的EditorGridPanel可新增行,我输入第一列的值,关闭window;第二次点新建按钮,打开新的包含Ext.grid.EditorGridPanel的window,新增行时,不能在第一列输值,只能在后面的几列输值。
我试了试,所有上次编辑过的列,在下次就不能编辑了。出现了可编辑表格右移的情况,希望大家帮我解决一下,谢谢了。
具体情形是这样的:我第一个画面有一个新建按钮,打开后是一个包含Ext.grid.EditorGridPanel的window,在window内的EditorGridPanel可新增行,我输入第一列的值,关闭window;第二次点新建按钮,打开新的包含Ext.grid.EditorGridPanel的window,新增行时,不能在第一列输值,只能在后面的几列输值。
我试了试,所有上次编辑过的列,在下次就不能编辑了。出现了可编辑表格右移的情况,希望大家帮我解决一下,谢谢了。
http://www.cnblogs.com/kuailewangzi1212/archive/2008/08/01/1258439.html
第一个窗口的按钮: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();
}
});
你可以试试用这种方法有没有问题columns : [new Ext.grid.RowNumberer(),
{
header : 'items name',
sortable : true,
dataIndex : "'items_name'",
width:180,
editor: new Ext.form.TextField({
allowBlank: false
})
}
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
})
}]);