datagrid如今具備行編輯能力了,使用時只須在columns中爲須要編輯的列添加一個editor屬性,編輯保存時同時具備數據校驗能力。javascript
看一個例子效果圖:java
代碼以下:json
$('#tt').datagrid({ title:'Editable DataGrid', iconCls:'icon-edit', width:660, height:250, singleSelect:true, idField:'itemid', url:'datagrid_data.json', columns:[[ {field:'itemid',title:'Item ID',width:60}, {field:'productid',title:'Product',width:100, formatter:function(value){ for(var i=0; i<products.length; i++){ if (products[i].productid == value) return products[i].name; } return value; }, editor:{ type:'combobox', options:{ valueField:'productid', textField:'name', data:products, required:true } } }, {field:'listprice',title:'List Price',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}}, {field:'unitcost',title:'Unit Cost',width:80,align:'right',editor:'numberbox'}, {field:'attr1',title:'Attribute',width:150,editor:'text'}, {field:'status',title:'Status',width:50,align:'center', editor:{ type:'checkbox', options:{ on: 'P', off: '' } } }, {field:'action',title:'Action',width:70,align:'center', formatter:function(value,row,index){ if (row.editing){ var s = '<a href="#" onclick="saverow('+index+')">Save</a> '; var c = '<a href="#" onclick="cancelrow('+index+')">Cancel</a>'; return s+c; } else { var e = '<a href="#" onclick="editrow('+index+')">Edit</a> '; var d = '<a href="#" onclick="deleterow('+index+')">Delete</a>'; return e+d; } } } ]], onBeforeEdit:function(index,row){ row.editing = true; $('#tt').datagrid('refreshRow', index); }, onAfterEdit:function(index,row){ row.editing = false; $('#tt').datagrid('refreshRow', index); }, onCancelEdit:function(index,row){ row.editing = false; $('#tt').datagrid('refreshRow', index); } });