jquery easyui datagrid 实现单选且选择后可取消选择的效果

最近做的项目中产品提了一个某个查询功能结果列表的优化建议:(原话:选中后,再点击选中的这一条,系统应该取消选中。)用 jquery easyui datagrid 实现单选且选择后可取消选择的控制效果。(技术行话:)

1。网上搜了很多资料,都没搜到实现这种单选且可取消选择控制效果的现成实现。

2。有人或许会说 直接加个这个 singleSelect: true 不就可以了吗?是的,这样实现了单选效果,但是却没有实现单选且可取消选择的单选效果。一种可能得解决方法是在 singleSelect: true 的基础上做努力,但是各种尝试后,我选择了放弃。

3。我最后的实现思路是 singleSelect: false ,也就是先允许多选,然后再做控制。

4。当datagrid加载数据成功后,这么处理:

  onLoadSuccess: function (data) {
            if (data.total == 0) { $.messager.alert('系统提示', "查询结果为空,无符合条件记录", 'error'); }
            else {
                $("input[name=ck]").click(function () {

                    var ischecked = $(this).is(":checked");
                    $("input:checkbox[name=ck]:checked").attr("checked", false);
                    $('#grid').datagrid('clearSelections');
                    $('#grid').datagrid("unselectAll");
                    if (ischecked) {
                        $(this).attr("checked", true);
                    } else {
                        $(this).attr("checked", false);
                    }
                });
            }
        },

5。别急!这样只是表面上实现了单选且可取消选择的控制效果,这时当你快速选择两个复选框后会出现两个或多个都选择了的效果。这个是因为此时datagrid的这两个属性值: checkOnSelect: true,selectOnCheck: true, 导致的。

6。保持 checkOnSelect: true,selectOnCheck: true, 这个不变,我加了以下代码就没问题了:

        onClickRow: function (rowIndex, rowData) {
            $('#grid').datagrid("unselectAll");//取消选中当前所有行
            $('#grid').datagrid("selectRow", rowIndex);//选中当前点击的行
        },

7。 以上纯属个人学习总结,希望能帮助到需要这种效果的同际遇者。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值