if ($.fn.datagrid) {
$.extend($.fn.datagrid.methods, {
currentRowIndex: function (jq, obj) {
return $(obj).closest("tr.datagrid-row")[0].rowIndex;
},
changeEditor: function (jq, p) {
return jq.each(function () {
var dg = $(this);
var index = p.index;
if (typeof (index) != "number") {
index = $(index).closest("tr.datagrid-row")[0].rowIndex;
}
var editor = dg.datagrid('getEditor', { index: index, field: p.field });
var diveitor = $(editor.target).closest("div.datagrid-cell");
var editortd = $(editor.target).parent();
var opts = dg.datagrid("options");
var _15d, _15e;
if (typeof p.editor == "string") {
_15d = p.editor;
} else {
_15d = p.editor.type;
_15e = p.editor.options;
}
editortd.empty();
var _15f = opts.editors[_15d];
$.data(diveitor[0], "datagrid.editor", { actions: _15f, target: _15f.init(editortd, _15e), field: p.field, type: _15d, oldHtml: editor.oldHtml });
var row = opts.finder.getRow(dg[0], index);
var ed = $.data(diveitor[0], "datagrid.editor");
ed.actions.setValue(ed.target, row[p.field]);
ed.actions.resize(ed.target, diveitor.width());
});
},
getEditorValue: function (jq, p) {
var dg = jq;
var index = p;
if (typeof (index) != "number") {
index = $(index).closest("tr.datagrid-row")[0].rowIndex;
}
var opts = dg.datagrid("options");
var tr = opts.finder.getTr(dg[0], index);
var row = opts.finder.getRow(dg[0], index);
var _14d = $.extend({}, row);
tr.find("div.datagrid-editable").each(function () {
var _14e = $(this).parent().attr("field");
var ed = $.data(this, "datagrid.editor");
var t = $(ed.target);
var _14f = t.data("textbox") ? t.textbox("textbox") : t;
_14f.triggerHandler("blur");
var _150 = ed.actions.getValue(ed.target);
_14d[_14e] = _150;
});
return _14d;
},
setEditorValue: function (jq, p) {
return jq.each(function () {
var dg = $(this);
var index = p.index;
if (typeof (index) != "number") {
index = $(index).closest("tr.datagrid-row")[0].rowIndex;
}
var opts = dg.datagrid("options");
var tr = opts.finder.getTr(dg[0], index);
var row = opts.finder.getRow(dg[0], index);
var value = p.value || {};
var _14d = $.extend({}, row);
tr.find("div.datagrid-editable").each(function () {
var _14e = $(this).parent().attr("field");
if (value[_14e] !== undefined) {
var ed = $.data(this, "datagrid.editor");
var t = $(ed.target);
ed.actions.setValue(ed.target, value[_14e]);
}
});
});
}
});
}
用法:
改变编辑器 dg.datagrid("changeEditor",{index:0,field :'name',editor:'textbox'})
dg.datagrid("changeEditor",{index:0,field :'name',editor:{type:'textbox',options:{width:100}}})
获取编辑值:dg.datagrid("getEditorValue",0)
设置编辑值:dg.datagrid("setEditorValue",{index:0,vlaue:{name:'123',id:780}})