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

QQ登录

只需一步,快速开始

查看: 4558|回复: 10

[处理中4] 前端data排序问题

[复制链接]

36

主题

198

帖子

890

积分

高级会员

Rank: 4

积分
890
QQ
发表于 2017-3-31 08:38:18 | 显示全部楼层 |阅读模式
我在前端使用了exchangeRow的方法互换两行,我想问一下,就是data.getRowById('id')中的id是data数据字段的主键吗,还有就是执行完exchangeRow方法后用data.saveData()吗?

4

主题

15

帖子

23

积分

新手上路

Rank: 1

积分
23
QQ
发表于 2017-3-31 09:01:59 | 显示全部楼层
不用save,但是第一个问题不清楚,我是这样做的冒泡排序
  1. /*
  2.                  * 对data数据组件排序冒泡排序
  3.                  * relation:排序的关系字段
  4.                  * type:0升,1降
  5.                  * 问题:总有最后2行没有排序
  6.                  */
  7.                 sortData : function (objData,relation,type){
  8.                         var lRow = objData.getLastRow();
  9.                         var len = objData.count();
  10.                         var row1,row2;
  11.             for (var i = 0;i<len;i++) {                  
  12.                     objData.first(); //获取第一行位置,一次比较均是从第一行开始
  13.                     do {
  14.                         row1 = objData.getCurrentRow();
  15.                         objData.next();
  16.                         row2 = objData.getCurrentRow();

  17.                         switch(type){
  18.                             case 0:
  19.                                     if (row1.val(relation) > row2.val(relation)) {
  20.                                         objData.exchangeRow(row1,row2);
  21.                                 }
  22.                                     break;
  23.                             case 1:
  24.                                     if (row1.val(relation) < row2.val(relation)) {
  25.                                         objData.exchangeRow(row1,row2);
  26.                                 }
  27.                             }       
  28.                     } while (lRow != row2);
  29.                    
  30.                     //获取比较的最后的位置,循环一次,往前推一个
  31.                     objData.last();
  32.                     for (var j = 0; j < i; j++) {
  33.                             objData.pre();
  34.                     }
  35.                     lRow= objData.getCurrentRow();

  36.             }// end for
  37.                 }
复制代码
回复 支持 反对

使用道具 举报

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-3-31 09:45:43 | 显示全部楼层
exchangeRow不用执行data.saveData()方法
data.getRowById('id')中的id是data数据字段的主键吗?是的
回复 支持 反对

使用道具 举报

36

主题

198

帖子

890

积分

高级会员

Rank: 4

积分
890
QQ
 楼主| 发表于 2017-3-31 10:59:46 | 显示全部楼层
半导体 发表于 2017-3-31 09:45
exchangeRow不用执行data.saveData()方法
data.getRowById('id')中的id是data数据字段的主键吗?是的 ...

能根据这个id获取到它所在的当前行吗?
回复 支持 反对

使用道具 举报

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-3-31 11:03:05 | 显示全部楼层
双桅船 发表于 2017-3-31 10:59
能根据这个id获取到它所在的当前行吗?

能根据这个id获取到它所在的当前行吗?
data.getRowById('id')  根据行ID获取Row,函数会遍历所有数据,不要在循环中大量使用以免引发性能问题
回复 支持 反对

使用道具 举报

36

主题

198

帖子

890

积分

高级会员

Rank: 4

积分
890
QQ
 楼主| 发表于 2017-3-31 11:10:09 | 显示全部楼层
半导体 发表于 2017-3-31 11:03
能根据这个id获取到它所在的当前行吗?
data.getRowById('id')  根据行ID获取Row,函数会遍历所有数据, ...

我测试data.getRowByID('id')获取到的不是当前行,而是id一开始所在的行,互换两行后,它id所在的行还是一开始的,没有变啊
回复 支持 反对

使用道具 举报

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-3-31 11:45:33 | 显示全部楼层
不会啊  我也做了  没有这个情况啊
1.jpg
2.jpg
3.jpg
4.jpg
回复 支持 反对

使用道具 举报

36

主题

198

帖子

890

积分

高级会员

Rank: 4

积分
890
QQ
 楼主| 发表于 2017-3-31 12:18:33 | 显示全部楼层
半导体 发表于 2017-3-31 11:45
不会啊  我也做了  没有这个情况啊

哦,可能我没说清楚,我用的是静态data,然后自己添加了几条数据。没用关联数据库的baasdata,我要是用baasdata直接用order by就可以了,也就不用这么麻烦的排序了。

回复 支持 反对

使用道具 举报

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-3-31 13:32:09 | 显示全部楼层
双桅船 发表于 2017-3-31 12:18
哦,可能我没说清楚,我用的是静态data,然后自己添加了几条数据。没用关联数据库的baasdata,我要是用ba ...

那你实在不行  find方法不是也可以用吗   find也能查找到行
回复 支持 反对

使用道具 举报

36

主题

198

帖子

890

积分

高级会员

Rank: 4

积分
890
QQ
 楼主| 发表于 2017-3-31 16:40:50 | 显示全部楼层
半导体 发表于 2017-3-31 13:32
那你实在不行  find方法不是也可以用吗   find也能查找到行

我再试试吧!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 04:07 , Processed in 0.058452 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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