需求根据权限判断datagrid的每一列的checkBox是否可选,看了下文档,发现editor的checkbox应该能实现这个功能,但我们项目自己将easyui外面包了一层,把原生的editor改成了浮动形式的,并且由外面包那一层那初始化这个浮动的editor。而我要改的地方没有用外面包这样一层,如果用的话会很麻烦,牵扯的地方很多,于是就只有在Column的checkBox属性上想办法了。
看easyui的源代码,找到defaultView的renderRow方法,在渲染checkBox的地方cc.push('input type='checkbox')加上判断if(col.checkFormatter)就调用checkFormatter方法,获得visible,checked,enabled属性,然后用这些属性渲染那个input就可以了。
然后在column的属性里加上这两个属性:checkbox:true,checkFormatter:function(fied,rowData,rowIndex){return {visible:,checked:,enabled:}},这里调用这个方法的时候将三个参数传进去了,并且将this指针也改变了。col.checkFormatter.call(col,rowData[field],rowData,rowIndex)。
其实更好的方式可以把这两个属性合并成一个属性,就用checkBox就可以,先判断checkBox是不是boolean类型的,如果是就直接过,如果不是那么看看是不是对象,再从对象里找想要的属性。