EasyUI动态编辑datagrid单元格
var editField="";
var editOldValue="";
var editIndex = undefined;
var dataGridId = "";
function loadGrid(data,columnData,tableId){
$(document).mouseup(function(e) {
var con = $("#" + tableId);
if (!con.is(e.target) && con.has(e.target).length === 0) {
if (dataGridId && editIndex != undefined) {
$("#" + dataGridId).datagrid('endEdit', editIndex);
}
}
});
var isColumnsEdit = [];
var columns = [];
for(var columnIndex=0;columnIndex<columnData.length;columnIndex++){
var columnMap = columnData[columnIndex];
var column = new Object();
column.field = columnMap.hfield;
column.title = columnMap.htitle;
column.width = columnMap.hwidth;
column.align = columnMap.halign;
column.hidden = columnMap.hidden;
if(columnMap.hisedit){
isColumnsEdit.push(columnMap.hfield);
column.editor="text";
}
columns.push(column);
}
var columnArray = [columns];
HcreateGrild({
id:tableId,
singleSelect:true,
data:data,
columns:columnArray,
scrollbarSize:9,
pagination : false,
striped:true,
onClickCell:function(index, field,value){
var that = $(this);
var dataGrid = $(that).datagrid('options');
if(!(ismytask != "ismytask" || (typeof htype != "undefined" && htype == "view"))){
if(isColumnsEdit.indexOf(field)>-1){
editField = field;
editOldValue = value;
dataGridId = dataGrid.id;
if(endEditing(that, index, field, value)) {
$(that).datagrid('selectRow', index)
.datagrid('editCell', { index: index, field: field });
editIndex = index;
}
}
}
},
onAfterEdit: function (rowIndex, rowData, changes){
var that = $(this);
if(isColumnsEdit.indexOf(editField)>-1){
if(!changes[editField]){
rowData[editField]=editOldValue;
$(that).datagrid('refreshRow', rowIndex);
}
}
}
});
}
$.extend($.fn.datagrid.methods, {
editCell: function(jq,param){
return jq.each(function(){
var opts = $(this).datagrid('options');
var fields = $(this).datagrid('getColumnFields',true).concat($(this).datagrid('getColumnFields'));
for(var i=0; i<fields.length; i++){
var col = $(this).datagrid('getColumnOption', fields[i]);
col.editor1 = col.editor;
if (fields[i] != param.field){
col.editor = null;
}
}
$(this).datagrid('beginEdit', param.index);
for(var i=0; i<fields.length; i++){
var col = $(this).datagrid('getColumnOption', fields[i]);
col.editor = col.editor1;
}
});
}
});
function endEditing(that,index, field,value){
if (editIndex == undefined){return true}
if ($(that).datagrid('validateRow', editIndex)){
$(that).datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}