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

QQ登录

只需一步,快速开始

楼主: jerrynju

[结贴] 请求关于find用法!

[复制链接]
发表于 2016-1-20 14:18:23 | 显示全部楼层
jerrynju 发表于 2016-1-20 13:31
感谢回复和指点!目前是仅仅对姓名(fname)进行模糊查找,所以只写了一个条件。问题是现在我不知道如何把 ...

var rows = [];      
        this.comp('peopleData').each(function(param){
           var N=names;
           if(param.row.val('fname').indexOf(searchVal) != -1)
                 {
                     rows.push(param.row);                  }
         });
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 17:51:36 | 显示全部楼层
非常感谢Y.F.!但是我把代码写进JS中,通过alert显示[object],然后我进行了如下修改:

var rows = [];      
        this.comp('peopleData').each(function(param){
      
              if(param.row.val('fname').indexOf(searchVal) != -1)
                 {
                  rows.push(param.row.val('fname'));  
                     
                  alert(rows);   
                     
                                    
                  }
         });
然后就可以正常显示符合要求的姓名了,下一步按照您的提示,把rows 写进另外一个DATA,如果遇到难处还要再麻烦您了!
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 18:03:54 | 显示全部楼层
请问Y.F. 您写的代码中:

rows.push(param.row)

是DATA中的一行数据吧?一行数据(我这里是5列数据)怎么通过alert显示出来看看呢(检测一下代码效果)?

是不是把5列的值取出来,一个一个放到另外一个DATA1组件中?还是有什么方法把一行数据一次写进DATA1中?请指教!  
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 21:04:16 | 显示全部楼层
我刚刚一个一个进行了测试,搞清楚了rows.push(param.row) 的作用是到达符合查询条件的那一行,然后我对每一列数据进行取值,分别赋值给新的变量,再就是把新的变量存放到new DATA数组中,不知道这样对不对?请指教。
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 21:35:08 | 显示全部楼层
我看到您的对一个贴的回复:

使用data组件的each方法将值全部取出放到一个数组!再使用newData 方法将值加到第二个data中!

如果你的两个data的字段完全一样,还可以使用简单方法第二个data添加一行空数据先,然后将第一个data的整个行赋值!
row = data.add()
row.assign(row1)


我的第二个DATA数组与第一个字段完全一样,我按照您的提示,程序没有出错,但是没有把数值写到第二个DATA中,为什么呢?一定是我没有搞懂。请指教,代码如下:

Model.prototype.peopleDataSearch = function(event){
        var searchVal = this.getElementByXid("searchInput").value;               
        var data=this.comp('peopleData');
        var data1=this.comp('searchData');        
        var total= data.getCount();
        
   
        var rows = [];      
        this.comp('peopleData').each(function(param){
      
              if(param.row.val('fname').indexOf(searchVal) != -1)
                 {
                  rows.push(param.row);  
                  
                //  name1= param.row.val('fname');
                //  phone1= param.row.val('fphone');                  
                //  address1= param.row.val('faddress');                  
                //  ophone1= param.row.val('fophone');                  
                //  email1= param.row.val('femail');                    
                  
                  var row = data1.add();
                  row.assign('rows');
                                    
                  }
                  
                  
         });

       };


回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 22:14:29 | 显示全部楼层
参考您的帖子中的解答,我改写了一下代码,结果是出来了,符合我的期望,但是出现了2个问题:

(1)searchdata(模糊查询结果)数组没有看到数据,这是为什么呢?
(2)5列数据,程序把每一列变成1行,共5行来显示,实际上应该是一行中有5列,不知道问题出在哪里?

数组输出问题

数组输出问题
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 22:15:34 | 显示全部楼层
上述显示的代码:      

Model.prototype.peopleDataSearch = function(event){
        var searchVal = this.getElementByXid("searchInput").value;               
        var data=this.comp('peopleData');
        var data1=this.comp('searchData');        
        var total= data.getCount();
        
        
        var rows = [];      
        this.comp('peopleData').each(function(param){
      
              if(param.row.val('fname').indexOf(searchVal) != -1)
                 {
                  rows.push(param.row);  
                  
                  //name1= param.row.val('fname');
                  //phone1= param.row.val('fphone');                  
                  //address1= param.row.val('faddress');                  
                  //ophone1= param.row.val('fophone');                  
                  //email1= param.row.val('femail');                    
                  
                  //var row = data1.add();
                  //row.assign('rows');
                  
                  var kkk=[];

                  kkk.push({'fID':param.row.val('fID')},{'fname':param.row.val('fname')},{'fphone':param.row.val('fphone')},{'faddress':param.row.val('faddress')},{'fophone':param.row.val('fophone')},{'femail':param.row.val('femail')})

                          
                  data1.newData({defaultValues:kkk});
                                    
                  }
                  
                  
         });

       };
      
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-20 23:13:37 | 显示全部楼层
仔细检查,终于发现错误了,是多了{}。这样,在版主的大力帮助下,我的第二个WeX5写的带姓名模糊查找功能的通讯录终于完成了,再次感谢版主!

希望有空时,能够对上面的第一个问题(为何数据没有写进SEARCHDATA呢?)给予解答。多谢多谢!
回复 支持 反对

使用道具 举报

发表于 2016-1-21 10:29:23 | 显示全部楼层
jerrynju 发表于 2016-1-20 23:13
仔细检查,终于发现错误了,是多了{}。这样,在版主的大力帮助下,我的第二个WeX5写的带姓名模糊查找功能的 ...

第一个问题,如果你想直接在循环的时候赋值,那么就不需要定义rows数组了!
直接row.assign(param.row); 就行
因为row.assign里面的参数是一个行对象,而不是一个数组!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-1-21 11:47:28 | 显示全部楼层
多谢指教!还有就是我把查询出来的数据写进searchdata的数组后,怎么看不到呢?是临时在内存?怎么才能写进看得到的DATA?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-17 07:26 , Processed in 0.132185 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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