Extjs 分页多选的实现

Extjs 版本 6.X

 

单页面的多选,没有任何问题。

直接使用 Grid的配置项进行绑定即可获取:

            xtype: 'grid',
            bind: {
                selection: '{checkedRecords}'
            },

 

但是如果grid采用分页处理,当我们翻到第二页时 是一个新store,数据就完全变了,即使翻回第一页也没有之前的勾选了,

所以,我们实现分页多选,就要记录之前的选择。

我们的方案是使用另一个容器记录所有的勾选,效果如下:

为了好的用户体验,要注意的地方:

1. 每次添加新数据时,要判断数据是否已经存在。

    使用事件selectionchange,来添加新的勾选数据

   

            Ext.Array.each(selected, function (item) {
                //如果勾选信息在右侧列表不存在,则添加
                var isExist = Ext.Array.findBy(selectedRecords.items, function (r) {
                    return item.get('Id') === r.get('Id');
                });
                if (!isExist) {
                    selectedStore.add(item);
                    // 保持所有数据为勾选状态
                    selectedGrid.getSelectionModel().selectAll();
                }
            });

 

2. 从第2页翻回第1页时,要把第一页的勾选数据,勾选上。

   在左侧store的load事件中,找到要勾选的数据,进行处理:

grid.getSelectionModel().select(result)

 

3. 删除勾选数据时,同时把表格的勾选数据也一并删除。

grid.getSelectionModel().deselect(store.indexOf(result), true);

 

转载于:https://www.cnblogs.com/hankuikui/p/7018946.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值