easyui:datagrid中的checkbox的实现

本文介绍了如何在EasyUI的datagrid中实现checkbox的状态控制,通过后台传来的1/0数据来决定checkbox是否选中。通过添加formatter函数和使用三元运算符,可以轻松创建对应状态的checkbox。然而,这导致了全选功能失效。为解决这个问题,文章提出了一种方案:在表头添加一个自定义的checkbox,并绑定函数,当该checkbox被选中时,调用预设的getAll函数来实现所有行的全选操作。
        $("#tb_sysAttr").datagrid({
            columns:[[
                {field:'read',title:'可读',width:150,align:'center',
                    formatter: function(value){
                        return (value==1)? '': '';
                    }
                },
                {field:'write',title:'可写',width:250,align:'center',
                    formatter: function(value){
                        return (value==1)? '': '';
                    }}
            ]]
        })

上面是完整js代码,我后台传来的数据是 1/0,为1时,checkbox勾选,为0时,不勾选。

要达到我们设想的效果,只需要加一个formatter即可,再用一个?: ,生成指定状态的checkbox即可。

不过此时,你会发现,全选并不好用:

解决方案如此:(来自于M同学)

利用title属性,在表头加上一个我们自己的checkbox。

当它勾选上时,触发我们预设的getAll函数函数,把其所在列全部勾选。

{field:'read',title:'可读:',checkbox:false,width:150,align:'center',

    formatter: function(value){
        return (value==1)? '': '';
    }
},

/*权限设置中 全选的实现*/
function getall(This) {
    var rows = $("#tb_sysAttr").datagrid('getRows');
    var id=document.getElementById(This.id);
    console.log(id.checked);
    if(id.checked) {
        for (var a = 0; rows[a]!=null; a++)
            if(This.id=="read_a")
                rows[a].read = 1; //获取指定列
            else
                rows[a].write=1;
    }
    else {
        for (var a = 0; rows[a]!=null; a++)
            if(This.id=="read_a")
                rows[a].read = 0; //获取指定列
            else
                rows[a].write=0;
    }
    $("#tb_sysAttr").datagrid('loadData',rows);
    console.log(rows);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值