easyui datagrid checkbox 绑定数据禁用的方案尝试

先上图:
自己在网上查了好多,有的给出了好思路但是实行起来却没好的方法!
1、比较多的是数据加载成功后一个个判断!但是我是在detail-grid中用的checkbox.,$("input [type=checkbox]")选择会让每个
           detail的表格都会选中!查看显示网页,发现input并不在每个detail-grid中,所以想用$("#detail-0 input")的思路也失败!/
2、用自定义checkbox,formatter是返回<input type="checkbox"/>,但是选中功能和全选功能不能使用,所以很不好。
       切入正题:
                   用到列的styler  和 formatter属性和onSelectAll事件
       A、首先checkbox列绑定控制数据,在styler 函数中可以判断改行数据是否禁用checkbox,如果禁用则设置checkbox=false,否则checkbox=true,必须要设置为true,否则第一个禁用行之后的都会被禁用!
例如:[code=javascript]
  function showstyle(value,rowData,rowIndex) {
    if (rowData.项目编号== 1) {
        $(this)[0].checkbox = false;
    } else {
       $(this)[0].checkbox = true;
    }
}
[/code]
        B、然后写formatter属性,当checkbox=ture貌似是不响应这个事件的,被禁用的行checkbox=false ,所以可以相应该属性,这时候你就可以自定义该属性了,返回一个禁用的checkbox或者显示其他文字都可以。
[code=javascript]
function showcheck(value,rowData,rowIndex) {
    if (rowData.项目编号 == 1) {
        return "已计划";
    }
}
或者:
function showcheck(value,rowData,rowIndex) {
    if (rowData.项目编号 == 1) {
        return '<input type="chckbox" disabled="true"/>';
    }
}
[/code]
          C 、最后一步就是改变全选的事件,全选时当然希望禁用的不能被选中,所以在onSelectAll时要把禁用的给取消掉。
[code=javascript]
onSelectAll: function (rows) {                   
                    for (i = 0; i < rows.length; i++) {
                        if (rows[i].项目编号 == 1) {
                            $(this).datagrid("unselectRow", i);
                        }
                    }
                }
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值