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

QQ登录

只需一步,快速开始

查看: 8401|回复: 11

[处理中6] 对话框中的grid多选,第二次打开,不能记住之前的勾选

[复制链接]

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
发表于 2017-5-8 15:51:39 | 显示全部楼层 |阅读模式
对话框中的grid多选,第二次打开,不能记住之前的勾选,这个要怎么解决?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35928
发表于 2017-5-8 17:07:10 | 显示全部楼层
自己把之前选择的做一个变量存储,再打开的自己读取变量,然后设置相关的记录勾选
代码控制选择参考http://doc.wex5.com/?p=4560#4.5
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-5-8 17:20:36 | 显示全部楼层
本帖最后由 qweasdzxc 于 2017-5-8 17:45 编辑
jishuang 发表于 2017-5-8 17:07
自己把之前选择的做一个变量存储,再打开的自己读取变量,然后设置相关的记录勾选
代码控制选择参考http:// ...

第二次打开选择后,怎么把selectData里重复的数据删掉?
  1.    //返回的结果集
  2.         Model.prototype.result = function(){
  3.                 var ret = [];
  4.                 var data = this.comp('selectData');
  5.                 data.each(function(p) {
  6.                       ret.push(p.row);
  7.                 });

  8.                 return ret;
  9.         };
  10.        
  11.         //对话框返回数据
  12.         Model.prototype.OKBtnClick = function(event){
  13.                 this.comp('wReceiver').windowEnsure(this.result());
  14.         };
  15.        
  16.         //对话框打开检查是否选择存放位置
  17.         Model.prototype.windowReceiverReceive = function(event){
  18.         var _this=this;
  19.         if(event.data.fLibraryId){
  20.         var dialogData=this.comp("dialogData");
  21.         dialogData.setFilter("filter2", "SAM_FacetTerm.fLibraryId='"+event.data.fLibraryId+"' or SAM_FacetTerm.fNodeType='facet' or (SAM_FacetTerm.fNodeType='term' and SAM_FacetTerm.fStatus='FB')");
  22.         dialogData.refreshData();
  23.         this.comp("treeGrid").expandAll();
  24.         dialogData.first();
  25.         }else{
  26.         _this.comp("messageDialog").show({message : "没有选择存放位置!"});
  27.         }
  28.         var selectData=this.comp("selectData");
  29.         alert(selectData.count());
  30.         var treeGrid=this.comp("treeGrid");
  31.         selectData.each(function(param){
  32.      treeGrid.setRowChecked(param.row.val('fID'),true);
  33.     });
  34. //    if(selectData.count()>0){
  35. //    this.comp("selectData").clear();
  36. //    }
  37.        
  38.         };
  39.        
  40.         //控制树的选择
  41.         Model.prototype.treeGridRowCheck = function(event){
  42.         var _this=this;
  43.         var checkedID = event.rowID;
  44.         var fParent=null;
  45.         if(event.row.val("fNodeType")==="term"){
  46.             var params = new biz.Request.ActionParam();
  47.                 params.setString("checkedID", checkedID);
  48.                 biz.Request.sendBizRequest({
  49.                         "context" : this.getContext(),
  50.                         "action" : "checkTermAction",
  51.                         "parameters" : params,
  52.                         "directExecute" : true,
  53.                         "callback" : function(data) {
  54.                         if(data.state){
  55.                         fParent=data.response;
  56.                         }
  57.                         }
  58.                 });
  59.             }
  60.            var isChecked=false;
  61.            var checkRows = event.source.getCheckedRows();
  62.            for(var i=0;i<checkRows.length;i++){
  63.              if(checkRows[i].row.SAM_FacetTerm.value.latestValue==fParent){
  64.                  isChecked=true;
  65.              }
  66.            }
  67.            if(event.row.val("fNodeType")!="facet" && event.row.val("fNodeType")!="term"){
  68.                 event.cancel = true;
  69.                 _this.comp("messageDialog").show({message : "分类不可以选择!"});
  70.             }else{
  71.             if(event.row.val("fNodeType")==="term" && isChecked===false){
  72.                          event.cancel = true;
  73.                          _this.comp("messageDialog").show({message : "您没有选择该术语所属的刻面!"});
  74.                    }else{
  75.                 event.cancel = false;
  76.                 }
  77.         }
  78.         };

  79.     //选择成功后往返集合里加数据
  80.         Model.prototype.treeGridRowChecked = function(event){
  81.         var row = event.row.row;
  82.         var data = this.comp("selectData");
  83.         if(event.checked){            
  84.             var options = {
  85.                 defaultValues : [
  86.                         {
  87.                             fID:event.rowID,
  88.                             fName:row.fName.value.latestValue,
  89.                             fNodeType:row.fNodeType.value.latestValue,
  90.                             fParent:row.fParent.value.latestValue
  91.                          }
  92.                 ]
  93.             };
  94.             data.newData(options);
  95.         }else{
  96.                 data.deleteData(data.getRowByID(event.rowID));
  97.         }
  98.         };
复制代码



回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35928
发表于 2017-5-8 17:57:45 | 显示全部楼层
一样,自己变量中存储,然后获取,data调用remove方法移除相关的数据
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-5-8 19:05:00 | 显示全部楼层
jishuang 发表于 2017-5-8 17:57
一样,自己变量中存储,然后获取,data调用remove方法移除相关的数据

我用下面的方法remove,可是报错
  1.   //选择成功后往返集合里加数据
  2.         Model.prototype.treeGridRowChecked = function(event){
  3.         var row = event.row.row;
  4.         var data = this.comp("selectData");
  5.         if(event.checked){
  6.             var options = {
  7.                 defaultValues : [
  8.                         {
  9.                             fID:event.rowID,
  10.                             fName:row.fName.value.latestValue,
  11.                             fNodeType:row.fNodeType.value.latestValue,
  12.                             fParent:row.fParent.value.latestValue
  13.                          }
  14.                 ]
  15.             };
  16.             if(data.count()>0){
  17.             debugger
  18.             data.each(function(p) {
  19.                        if(p.row.val('fID')==event.rowID){
  20.                            data.remove(data.getRowByID(event.rowID));
  21.                        }else{
  22.                            data.newData(options);
  23.                        }
  24.                 });}else{
  25.                 data.newData(options);
  26.                 }            
  27.           
  28.         }else{
  29.                 data.deleteData(data.getRowByID(event.rowID));
  30.         }
  31.         };
复制代码
  1. Cannot read property 'val' of undefined
  2. 隐藏详细
  3. TypeError: Cannot read property 'val' of undefined at http://localhost:8080/x5/UI2/v_22850e40da3c47aeb74a17f232bfad89l_zh_CNs_desktopd_pc/SAM/assetManage/process/assetin/facet_termDialog.js:108:18 at constructor._eachAll (http://localhost:8080/x5/UI2/v_7667111f87e84cdbaf53f1119790172fl_zh_CNs_desktopd_pc/system/common.min.js:7:22327) at constructor._each (http://localhost:8080/x5/UI2/v_7667111f87e84cdbaf53f1119790172fl_zh_CNs_desktopd_pc/system/common.min.js:7:22471) at constructor.each (http://localhost:8080/x5/UI2/v_7667111f87e84cdbaf53f1119790172fl_zh_CNs_desktopd_pc/system/common.min.js:7:22700) at constructor.Model.treeGridRowChecked (http://localhost:8080/x5/UI2/v_22850e40da3c47aeb74a17f232bfad89l_zh_CNs_desktopd_pc/SAM/assetManage/process/assetin/facet_termDialog.js:107:11) at constructor.fire (http://localhost:8080/x5/UI2/v_787d29820287411ab1a129ceea33edc0l_zh_CNs_desktopd_pc/system/core.min.js:65:234367) at constructor.fireEvent (http://localhost:8080/x5/UI2/v_787d29820287411ab1a129ceea33edc0l_zh_CNs_desktopd_pc/system/core.min.js:65:235531) at constructor.callParent (http://localhost:8080/x5/UI2/v_787d29820287411ab1a129ceea33edc0l_zh_CNs_desktopd_pc/system/core.min.js:65:231806) at constructor.fireEvent (http://localhost:8080/x5/UI2/v_7667111f87e84cdbaf53f1119790172fl_zh_CNs_desktopd_pc/system/common.min.js:7:3704) at HTMLTableElement.eval (eval at <anonymous> (http://localhost:8080/x5/UI2/v_787d29820287411ab1a129ceea33edc0l_zh_CNs_desktopd_pc/system/core.min.js:65:18260), <anonymous>:207:340414)
  4. 关闭
复制代码



回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35928
发表于 2017-5-9 09:06:35 | 显示全部楼层
不能在循环中删除啊
在循环中把满足条件的row放到数组中,循环结束中在数组中remove
  1.                 var data = this.comp("bizData1");
  2.                 var rows = [];
  3.                 data.each(function(param) {
  4.                         if (param.row.val('fName') == 'bbb') {
  5.                                 rows.push(param.row);
  6.                         }
  7.                 });
  8.                 for ( var i in rows) {
  9.                         data.remove(rows[i]);
  10.                 }
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-5-9 10:14:33 | 显示全部楼层
jishuang 发表于 2017-5-9 09:06
不能在循环中删除啊
在循环中把满足条件的row放到数组中,循环结束中在数组中remove
...

我像下面的修改以后,第二次打开对话框不能把上次选的全勾上,能远程看看吗?
  1. //选择成功后往返集合里加数据
  2.         Model.prototype.treeGridRowChecked = function(event){
  3.         var row = event.row.row;
  4.         var data = this.comp("selectData");
  5.         var reaptrows = [];
  6.         if(event.checked){
  7.             var options = {
  8.                 defaultValues : [
  9.                         {
  10.                             fID:event.rowID,
  11.                             fName:row.fName.value.latestValue,
  12.                             fNodeType:row.fNodeType.value.latestValue,
  13.                             fParent:row.fParent.value.latestValue
  14.                          }
  15.                 ]
  16.             };
  17.             if(data.count()>0){
  18.             debugger
  19.             data.each(function(p) {
  20.                    debugger
  21.                        if(p.row.val('fID')==event.rowID){
  22.                             reaptrows.push(p.row);
  23.                        }else{
  24.                            data.newData(options);
  25.                        }
  26.                 });
  27.                 for ( var i in reaptrows) {
  28.          data.remove(reaptrows[i]);
  29.         }         
  30.                 }else{
  31.                 data.newData(options);
  32.                 }   
  33.           
  34.         }else{
  35.                 data.deleteData(data.getRowByID(event.rowID));
  36.         }
  37.         };
复制代码


回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35928
发表于 2017-5-9 11:24:29 | 显示全部楼层
2楼已经发来的怎么用代码控制勾选,你的什么地方设置了?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-5-9 11:28:35 | 显示全部楼层
jishuang 发表于 2017-5-9 11:24
2楼已经发来的怎么用代码控制勾选,你的什么地方设置了?

在下面放放中的最后位置设置的
  1.         //对话框打开检查是否选择存放位置
  2.         Model.prototype.windowReceiverReceive = function(event){
  3.         var _this=this;
  4.         if(event.data.fLibraryId){
  5.         var dialogData=this.comp("dialogData");
  6.         dialogData.setFilter("filter2", "SAM_FacetTerm.fLibraryId='"+event.data.fLibraryId+"' or SAM_FacetTerm.fNodeType='facet' or (SAM_FacetTerm.fNodeType='term' and SAM_FacetTerm.fStatus='FB')");
  7.         dialogData.refreshData();
  8.         this.comp("treeGrid").expandAll();
  9.         dialogData.first();
  10.         }else{
  11.         _this.comp("messageDialog").show({message : "没有选择存放位置!"});
  12.         }
  13.         var selectData=this.comp("selectData");
  14.         alert(selectData.count());
  15.         var treeGrid=this.comp("treeGrid");
  16.         selectData.each(function(param){
  17.      treeGrid.setRowChecked(param.row.val('fID'),true);
  18.     });
  19. //    if(selectData.count()>0){
  20. //    this.comp("selectData").clear();
  21. //    }
  22.       
  23.         };
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35928
发表于 2017-5-9 13:47:51 | 显示全部楼层
确认param.row.val('fID')正确吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 04:47 , Processed in 0.081130 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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