起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2507|回复: 10

[结贴] 批量删除

[复制链接]

127

主题

535

帖子

1076

积分

金牌会员

Rank: 6Rank: 6

积分
1076
QQ
发表于 2018-3-27 16:18:51 | 显示全部楼层 |阅读模式
请问想做一个可以批量删除的怎么做?现在遇到的两个问题是:1、红色勾选框为主勾选框,怎么实现全选和不全选的功能?
2、如何将勾选框选中的数据一次性删除?
淘宝案例中是将在数据中留有一个选择的字段,可以有其他的方法吗?



3.png
发表于 2018-3-27 16:34:34 | 显示全部楼层
你是使用list组件实现的是吗??
头部的checkBox  选中的时候  data.each 循环 给每行 checkBox   绑定的字段赋值!

批量删除也一样,data.each循环 判断字段的值 就可以知道当前行是否选中了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

127

主题

535

帖子

1076

积分

金牌会员

Rank: 6Rank: 6

积分
1076
QQ
 楼主| 发表于 2018-3-27 16:47:36 | 显示全部楼层
本帖最后由 chenweibinx 于 2018-3-27 16:58 编辑
liangyongfei 发表于 2018-3-27 16:34
你是使用list组件实现的是吗??
头部的checkBox  选中的时候  data.each 循环 给每行 checkBox   绑定的字 ...
全选和全不选:勾选框绑定在cdata中(chooseData),判断当主勾选框为选中状态,则遍历其他的勾选框也为选中状态,否则就都不选中,但是主勾选框怎么变化,下面的勾选框都是未勾选的状态var chooseData = this.comp("chooseData");
                var choose = this.comp("checkbox1").val();
                if (choose === true) {
                        chooseData.each(function(obj) {
                                this.comp("checkbox2").set({
                                        "checked" : true,
                                });
                        });
                } else {
                        chooseData.each(function(obj) {
                                this.comp("checkbox2").set({
                                        "checked" : false,
                                });
                        });
                }

回复 支持 反对

使用道具 举报

发表于 2018-3-27 17:07:01 | 显示全部楼层
chenweibinx 发表于 2018-3-27 16:47
全选和全不选:勾选框绑定在cdata中(chooseData),判断当主勾选框为选中状态,则遍历其他的勾选框也为选 ...

参考
/UI2/system/components/justep/button/demo/checkbox.w

  var choose this.comp('checkbox1').get('checked')
if(choose){

}else{

}

这样就可以 ,不必 是 choose === true
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

127

主题

535

帖子

1076

积分

金牌会员

Rank: 6Rank: 6

积分
1076
QQ
 楼主| 发表于 2018-3-27 17:30:12 | 显示全部楼层
liangyongfei 发表于 2018-3-27 17:07
参考
/UI2/system/components/justep/button/demo/checkbox.w

Model.prototype.checkbox1Change = function(event) {
                var checkObj = this.comp('checkbox2');
                checkObj.get('checked') ? checkObj.set({
                        'checked' : null
                }) : checkObj.set({
                        'checked' : 'true'
                });
        };
参考之后,现在改成这样,第一行勾选框的xid是checkbox2,这样只会改变第一行的勾选状态,请问还有什么方法吗?还是不大懂怎么做
回复 支持 反对

使用道具 举报

发表于 2018-3-27 17:40:08 | 显示全部楼层
chenweibinx 发表于 2018-3-27 17:30
Model.prototype.checkbox1Change = function(event) {
                var checkObj = this.comp('checkbox2');
                che ...

我的代码意思是选择  头部的checkBox 判断是否选中了

如果选中了  list中的 checkBox 应该 使用 data.each循环 去赋值的!  而不是直接对组件操作
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

127

主题

535

帖子

1076

积分

金牌会员

Rank: 6Rank: 6

积分
1076
QQ
 楼主| 发表于 2018-3-28 08:45:22 | 显示全部楼层
本帖最后由 chenweibinx 于 2018-3-28 09:32 编辑
liangyongfei 发表于 2018-3-27 17:40
我的代码意思是选择  头部的checkBox 判断是否选中了

如果选中了  list中的 checkBox 应该 使用 data.ea ...

在全选框的值改变事件中,能够判断是否选中,但怎么循环赋值好像都没有效果,alert的那句一直都是undefined
Model.prototype.checkbox1Change = function(event) {
                var chenckall = this.comp('checkbox1').get('checked');
                var chooseData = this.comp("chooseData");
                var typeData = this.comp("typeData");
                typeData.each(function(options) {
                        if (chenckall) {
                                chooseData.setValue("fChoose", "1", options.row);
                                alert(chooseData.getValue("fChoose", options.row));
                        } else {
                                chooseData.setValue("fChoose", "", options.row);
                        }
                });
        };
回复 支持 反对

使用道具 举报

发表于 2018-3-28 09:55:08 | 显示全部楼层
chenweibinx 发表于 2018-3-28 08:45
在全选框的值改变事件中,能够判断是否选中,但怎么循环赋值好像都没有效果,alert的那句一直都是undefine ...

你是执行的  typeData.each   可以循环里使用的是 chooseData.setValue
这怎么混了??怎么能对呢??
循环里直接options.row.val('字段','值')
赋值就可以了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

127

主题

535

帖子

1076

积分

金牌会员

Rank: 6Rank: 6

积分
1076
QQ
 楼主| 发表于 2018-3-28 10:05:42 | 显示全部楼层
本帖最后由 chenweibinx 于 2018-3-28 10:11 编辑
liangyongfei 发表于 2018-3-28 09:55
你是执行的  typeData.each   可以循环里使用的是 chooseData.setValue
这怎么混了??怎么能对呢??
循 ...

Model.prototype.checkbox1Change = function(event) {
                var chenckall = this.comp('checkbox1').get('checked');
                var chooseData = this.comp("chooseData");
                chooseData.each(function(options) {
                        if (chenckall) {
                                options.row.val('fChoose','1');
                        } else {
                                options.row.val('fChoose','');
                        }
                });
        };这样还是不行,each都不执行,choosedata是cdata,用来存放勾选框的值
6.png
回复 支持 反对

使用道具 举报

发表于 2018-3-28 10:20:10 | 显示全部楼层
chenweibinx 发表于 2018-3-28 10:05
Model.prototype.checkbox1Change = function(event) {
                var chenckall = this.comp('chec ...

data.count() 是多少? 里面有值吗??
勾选框 应该和 list 绑定的是同一个data   data中可以添加计算列  表示是否勾选

不要把list绑定的data 和 勾选框的data 分开 设置
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 01:23 , Processed in 0.064015 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表