今天遇到一个需求,要动态添加或者删除DataGrid列的editor,具体就是有一个可编辑的DataGrid,在新增一行的时候,每个单元格的值都是手动录入的,但是编辑的时候,某列(比如XX代码列)是不能编辑的,于是经过百度,得出如下解决方案:
1、因为jEasyUI DataGrid本身并没有提供此功能,所以需要自己扩展这两个功能,代码如下:
//扩展datagrid:动态加入、删除editor $.extend($.fn.datagrid.methods, { addEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item.field); e.editor = item.editor; }); } else { var e = $(jq).datagrid('getColumnOption', param.field); e.editor = param.editor; } }, removeEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item); e.editor = {}; }); } else { var e = $(jq).datagrid('getColumnOption', param); e.editor = {}; } } });
2、方法调用:
2.1 加入editor:
$("#xxDg").datagrid("addEditor", [ {field: "COLFIELD", editor:{ type: "textbox", options:{ required:true } } } ]);
2.2 删除editor:
$("#xxDg").datagrid("removeEditor", "COLFIELD");