今天大DC工会(页游工人物语)的土豪会长在使用easyUI的datagrid的时候遇到一个问题,需求如下:
需要datagrid在加载数据的同时通过判断数据将满足条件的数据行的checkbox勾选上。
在数据量小的情况下可以通过在onloadsuccess中进行处理,在数据量较大的情况下这种方式就行不通了。和土豪一起试了各种方式还是没有找到datagrid自带的处理这类问题的方法(cobobox就有在加载的数据中包含selected属性就可以实现默认选中)。
既然没有现成的方法解决这个问题那就只有自己动手了,既然easyui是开源的那就自己来修改easyUI的源代码实现(变态)需求,要不然开源有啥意义呢。
代码修改如下:
easyUI 1.3.3 jquery.easyui.min.js 的8696行:
if(col.checkbox){
cc.push("<input type=\"checkbox\" name=\""+_643+"\" value=\""+(_644!=undefined?_644:"")+"\"/>");
}
修改为
if(col.checkbox){
if(col.checker&&col.checker(_641))
{
cc.push("<input type=\"checkbox\" name=\""+_643+"\" value=\""+(_644!=undefined?_644:"")+"\" checked=\"checked\" />");
}
else
cc.push("<input type=\"checkbox\" name=\""+_643+"\" value=\""+(_644!=undefined?_644:"")+"\"/>");
}
然后在自己的datagrid定义中像使用fomatter一样在定义checkbox的列中加入
checker:function(row)
{
return true;
}
这样基本就能实现这一(变态)需求了。
声明:该方法未经过充分的测试,如有bug概不负责,请慎用。
无利不起早,作为回报,强烈要求大土豪降低DC工会内部交易价格!