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));
}