jquery easyui datagrid 行编辑,动态改变编辑器类型,获取编辑行输入的值

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

猜你喜欢

转载自blog.csdn.net/LU142857/article/details/88026094