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

QQ登录

只需一步,快速开始

查看: 2415|回复: 10

[结贴] 想把在baasdata中取出的数据作为swtich的参数,进行赋值

[复制链接]

26

主题

119

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
QQ
发表于 2017-3-13 22:51:17 | 显示全部楼层 |阅读模式
本帖最后由 55open 于 2017-3-13 22:53 编辑

用遍历的方法把所有所有符合条件的数据行取出来,然后取出sID_作为switch的参数,将当前行的value值赋给相应的数组,但是结果是直接跳到default执行了。
          var value0= new Array();
           var value1 = new Array(); var value2 = new Array();
           var value3 = new Array(); var value4 = new Array();
           var value5 = new Array();  var value5_ = new Array();
           var value6 = new Array(); var value7 = new Array();
if(sensorData.find(['dId'],  [devData.val('fidID')]).length >0)//能在sensordata找到,能在dsdata找到fID
           {
         
                   var lRow = sensorData.getLastRow(), row = [];
                   var sID_ = new Array();
                   var k = 0;
                        do {
                            row = sensorData.getCurrentRow();
                            if(sensorData.val('dId') == devData.val('fidID'))
                            {
                            time.push(sensorData.val('time'));
                            sID_.push(sensorData.val('sId'));//能取出SID
                          
                            switch(sID_[k++])
                                {
                                case SID[0]: value0.push(sensorData.val('value'));
                                                     break;
                                case SID[1]: value1.push(sensorData.val('value'));
                                                        break;
                                case SID[2]: value2.push(sensorData.val('value'));
                                                        break;
                                case SID[3]: value3.push(sensorData.val('value'));
                                                        break;
                                case SID[4]: value4.push(sensorData.val('value'));
                                                        //sensorData.next();k++;
                                                        
                                                        break;
                                case SID[5]:value5.push(sensorData.val('value'));
                                                        value5_.push(sensorData.val('value2'));
                                                        break;
                                case SID[6]:value6.push(sensorData.val('value'));
                                                        break;
                                case SID[7]: value7.push(sensorData.val('value'));
                                                        break;
                                default:         alert(' cannot transit value');
                                                        break;
                        
                                }
                           
                            }                           
                            sensorData.next();
                        } while (lRow != row);
                        
                        
                          
                }
                 
           
           else
           {
           alert('not get sensordata ');
           }
发表于 2017-3-14 09:55:50 | 显示全部楼层
sensorData.find(['dId'],  [devData.val('fidID')])  是前端查询
获取的是一个数组!!如果你想操作这个数组,就用过for循环处理数据啊!

而你调用的是sensorData.next();  就是data组件循环了!和符合条件数据的循环没关系了!!
你的逻辑有问题!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

119

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
QQ
 楼主| 发表于 2017-3-14 10:25:35 | 显示全部楼层
liangyongfei 发表于 2017-3-14 09:55
sensorData.find(['dId'],  [devData.val('fidID')])  是前端查询
获取的是一个数组!!如果你想操作这个数 ...

我用find只是为了查询一下sensorData是否能查到一个数值的存在,作为是否进行下一步执行的判别语句,所以用这个数组的长度length作为判断。如果有这个数值,就在sensorData组件中进行数值的遍历操作, 取当前行用if(sensorData.val('dId') == devData.val('fidID'))进行判断,把符合条件的值取出来。我感觉逻辑上没有问题啊。
回复 支持 反对

使用道具 举报

26

主题

119

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
QQ
 楼主| 发表于 2017-3-14 11:08:16 | 显示全部楼层
本帖最后由 55open 于 2017-3-14 11:50 编辑
liangyongfei 发表于 2017-3-14 09:55
sensorData.find(['dId'],  [devData.val('fidID')])  是前端查询
获取的是一个数组!!如果你想操作这个数 ...

我用find来根据我的接收参数(fid)找到在baasdata中相匹配行,然后进行操作,这样对吗?我做了如下测试:  var SID = new Array();
                var rows  = dsData.find(['dId'],  [devData.val('fidID')],false,true,true,true);
                //dsData.find(fields, values, first, caseInsensitive, partialKey, all)
                if(rows.length > 0){
                for(var i =0; i<rows.length ; i++){
                        alert(rows.val('sId'));
                 }
                }
                else{
                alert('error')
                }


显示只取出来两行数据,但是数据库中是八行数据,为什么会只取出两条呢?






回复 支持 反对

使用道具 举报

发表于 2017-3-14 12:04:25 | 显示全部楼层
55open 发表于 2017-3-14 11:08
我用find来根据我的接收参数(fid)找到在baasdata中相匹配行,然后进行操作,这样对吗?我做了如下测试: ...

首先获取行对象值应该是
alert(rows.val('sId'));

find方法看下API 吧,这个是前端查询!你的数据如果全部加载到data组件中,才能查出来全部符合条件的数据!否则只能查出目前加载到data组件中的数据!!
  1. /查找fName="李四",fAge=18的数据
  2. var rows = this.comp('mainData').find(['fName','fAge'],['李',18]);
  3. if(rows.length==0) alert('没有符合条件数据');
复制代码



如果想后端过滤进行查询!也可以通过data.setFilter('filter1',"dId='"+devData.getValue('fidID')+"'");
data.refreshData()

这是后端查询!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

119

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
QQ
 楼主| 发表于 2017-3-14 15:26:51 | 显示全部楼层
本帖最后由 55open 于 2017-3-14 15:36 编辑
liangyongfei 发表于 2017-3-14 12:04
首先获取行对象值应该是
alert(rows.val('sId'));

我改成如下的代码,逻辑应该没有问题了,SID和sID_都能从find函数返回的rows_中取出。
我想根据数据库中sId的不同,将不同的值赋给不同的数组,最后在echarts图表中显示出来。可以把这一段当做分享吧。
var rows_= sensorData.find(['dId'],[devData.val('fidID')],false,false,true,true);
                var sID_ = new Array();
                var SID = new Array();
               
            if(rows_.length >0)
            {
                    
            for(var j = 0; j<8; j++ )
            {
                    SID[j] = rows_[j].val('sId');//取出要用到的sId
            }
            for(var i = 0; i<rows_.length ; i++)
            {
                    
                    switch(rows_.val('sId'))//根据sId的不同,将值赋给不同的数组
                                {
                                case SID[0]: value0 = rows_.val('value');
                                                        //value0.push(rows_.val('value'));                        
                                                        break;
                                case SID[1]:value1 = rows_.val('value');
                                                        //value1.push(rows_.val('value'));
                                                        //sensorData.next();k++;
                                                        break;
                                case SID[2]:value2 = rows_.val('value');
                                                        break;
                                                        // value2.push(rows_.val('value'));
                                                        //k++;
                                                        
                                case SID[3]: //value3.push(rows_.val('value'));
                                                        //sensorData.next();k++;
                                                        value3 = rows_.val('value');
                                                        break;
                                case SID[4]: //value4.push(rows_.val('value'));
                                                        //sensorData.next();k++;
                                                        value4 = rows_.val('value');
                                                        break;
                                case SID[5]://value5.push(rows_.val('value'));
                                                        //value5_.push(rows_.val('value2'));
                                                        //sensorData.next();k++;
                                                        value5 = rows_.val('value');
                                                        value5_ = rows_.val('value2');
                                                        break;
                                case SID[6]://value6.push(rows_.val('value'));
                                                        //sensorData.next();        k++;
                                                    value6 = rows_.val('value');
                                                        break;
                                case SID[7]: //value7.push(rows_.val('value'));
                                                        //sensorData.next();k++;
                                                        value7 = rows_.val('value');
                                                        break;
                                default:         alert(' cannot transit value');
                                                        break;
                        
                                }
            }
                    
                    
                    
                }
            else
            {
            alert('not get sensordata ');
            }
回复 支持 反对

使用道具 举报

26

主题

119

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
QQ
 楼主| 发表于 2017-3-14 15:29:59 | 显示全部楼层
本帖最后由 55open 于 2017-3-14 15:31 编辑
liangyongfei 发表于 2017-3-14 12:04
首先获取行对象值应该是
alert(rows.val('sId'));
  1. var rows_= sensorData.find(['dId'],[devData.val('fidID')],false,false,true,true);
  2.                 var sID_ = new Array();
  3.                 var SID = new Array();
  4.                
  5.             if(rows_.length >0)
  6.             {
  7.                     
  8.             for(var j = 0; j<8; j++ )
  9.             {
  10.                     SID[j] = rows_[j].val('sId');
  11.             }
  12.             for(var i = 0; i<rows_.length ; i++)
  13.             {
  14.                     
  15.                     switch(rows_[i].val('sId'))
  16.                                 {
  17.                                 case SID[0]: value0[i] = rows_[i].val('value');
  18.                                                         //value0.push(rows_[i].val('value'));                        
  19.                                                         break;
  20.                                 case SID[1]:value1[i] = rows_[i].val('value');
  21.                                                         //value1.push(rows_[i].val('value'));
  22.                                                         //sensorData.next();k++;
  23.                                                         break;
  24.                                 case SID[2]:value2[i] = rows_[i].val('value');
  25.                                                         break;
  26.                                                         // value2.push(rows_[i].val('value'));
  27.                                                         //k++;
  28.                                                         
  29.                                 case SID[3]: //value3.push(rows_[i].val('value'));
  30.                                                         //sensorData.next();k++;
  31.                                                         value3[i] = rows_[i].val('value');
  32.                                                         break;
  33.                                 case SID[4]: //value4.push(rows_[i].val('value'));
  34.                                                         //sensorData.next();k++;
  35.                                                         value4[i] = rows_[i].val('value');
  36.                                                         break;
  37.                                 case SID[5]://value5.push(rows_[i].val('value'));
  38.                                                         //value5_.push(rows_[i].val('value2'));
  39.                                                         //sensorData.next();k++;
  40.                                                         value5[i] = rows_[i].val('value');
  41.                                                         value5_[i] = rows_[i].val('value2');
  42.                                                         break;
  43.                                 case SID[6]://value6.push(rows_[i].val('value'));
  44.                                                         //sensorData.next();        k++;
  45.                                                     value6[i] = rows_[i].val('value');
  46.                                                         break;
  47.                                 case SID[7]: //value7.push(rows_[i].val('value'));
  48.                                                         //sensorData.next();k++;
  49.                                                         value7[i] = rows_[i].val('value');
  50.                                                         break;
  51.                                 default:         alert(' cannot transit value');
  52.                                                         break;
  53.                         
  54.                                 }
  55.             }
  56.                     
  57.                     
  58.                     
  59.                 }
复制代码
捕获.PNG
回复 支持 反对

使用道具 举报

发表于 2017-3-14 15:40:17 | 显示全部楼层

意思是修改成功了!是吗??可以结贴了对吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

119

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
QQ
 楼主| 发表于 2017-3-14 16:08:58 | 显示全部楼层
liangyongfei 发表于 2017-3-14 15:40
意思是修改成功了!是吗??可以结贴了对吧!

结帖我还能在这个帖子提问吗?
回复 支持 反对

使用道具 举报

发表于 2017-3-14 16:34:38 | 显示全部楼层
55open 发表于 2017-3-14 16:08
结帖我还能在这个帖子提问吗?

新问题!就重新发帖吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 03:57 , Processed in 0.062948 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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