jQuery EasyUI 数据网格 - 启用行内编辑
可编辑的功能是最近添加到数据网格(datagrid)的。它可以使用户添加一个新行到数据网格(datagrid)。用户也可以更新一个或多个行。
本教程向您展示如何创建一个数据网格(datagrid)和内联编辑器。

创建数据网格(DataGrid)
$(function(){ $(&qpos;#tt&qpos;).datagrid({ title:&qpos;Editable DataGrid&qpos;, iconCls:&qpos;icon-edit&qpos;, width:660, height:250, singleSelect:true, idField:&qpos;itemid&qpos;, url:&qpos;datagrid_data.json&qpos;, columns:[[ {field:&qpos;itemid&qpos;,title:&qpos;Item ID&qpos;,width:60}, {field:&qpos;productid&qpos;,title:&qpos;Product&qpos;,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:&qpos;combobox&qpos;, options:{ valueField:&qpos;productid&qpos;, textField:&qpos;name&qpos;, data:products, required:true } } }, {field:&qpos;listprice&qpos;,title:&qpos;List Price&qpos;,width:80,align:&qpos;right&qpos;,editor:{type:&qpos;numberbox&qpos;,options:{precision:1}}}, {field:&qpos;unitcost&qpos;,title:&qpos;Unit Cost&qpos;,width:80,align:&qpos;right&qpos;,editor:&qpos;numberbox&qpos;}, {field:&qpos;attr1&qpos;,title:&qpos;Attribute&qpos;,width:150,editor:&qpos;text&qpos;}, {field:&qpos;status&qpos;,title:&qpos;Status&qpos;,width:50,align:&qpos;center&qpos;, editor:{ type:&qpos;checkbox&qpos;, options:{ on: &qpos;P&qpos;, off: &qpos;&qpos; } } }, {field:&qpos;action&qpos;,title:&qpos;Action&qpos;,width:70,align:&qpos;center&qpos;, formatter:function(value,row,index){ if (row.editing){ var s = &qpos;<a href="#" onclick="saverow(this)">Save</a> &qpos;; var c = &qpos;<a href="#" onclick="cancelrow(this)">Cancel</a>&qpos;; return s+c; } else { var e = &qpos;<a href="#" onclick="editrow(this)">Edit</a> &qpos;; var d = &qpos;<a href="#" onclick="deleterow(this)">Delete</a>&qpos;; return e+d; } } } ]], onBeforeEdit:function(index,row){ row.editing = true; updateActions(index); }, onAfterEdit:function(index,row){ row.editing = false; updateActions(index); }, onCancelEdit:function(index,row){ row.editing = false; updateActions(index); } }); }); function updateActions(index){ $(&qpos;#tt&qpos;).datagrid(&qpos;updateRow&qpos;,{ index: index, row:{} }); }
为了启用数据网格行内编辑,您应该添加一个 editor 属性到列中。编辑器(editor)会告诉数据网格(datagrid)如何编辑字段及如何保存字段值。正如您所看到的,我们定义的三个编辑器(editor):text、combobox 和 checkbox。
function getRowIndex(target){ var tr = $(target).closest(&qpos;tr.datagrid-row&qpos;); return parseInt(tr.attr(&qpos;datagrid-row-index&qpos;)); } function editrow(target){ $(&qpos;#tt&qpos;).datagrid(&qpos;beginEdit&qpos;, getRowIndex(target)); } function deleterow(target){ $.messager.confirm(&qpos;Confirm&qpos;,&qpos;Are you sure?&qpos;,function(r){ if (r){ $(&qpos;#tt&qpos;).datagrid(&qpos;deleteRow&qpos;, getRowIndex(target)); } }); } function saverow(target){ $(&qpos;#tt&qpos;).datagrid(&qpos;endEdit&qpos;, getRowIndex(target)); } function cancelrow(target){ $(&qpos;#tt&qpos;).datagrid(&qpos;cancelEdit&qpos;, getRowIndex(target)); }