jQuery MiniUI

 找回密码
 立即注册
查看: 9819|回复: 22
打印 上一主题 下一主题

datagrid分组中的排序问题 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2014-5-7 17:06:42 |只看该作者 |倒序浏览
在onDrawGroup从新排序e.rows集合
grid1.groupBy("department" ,"asc")
e.rows.sort(sortByPersonID)
PersonID是row中的字段


显示上没问题

但是键盘向下箭头的时候,并不会跳到相邻的下一行的记录。


反而会跳到未排序前的下一行

请问如何处理


谢谢

Rank: 8Rank: 8

沙发
发表于 2014-5-7 17:22:37 |只看该作者
把你的分组操作代码贴一下

Rank: 3Rank: 3

板凳
发表于 2014-5-8 11:29:08 |只看该作者
  1.         function onDrawGroup(e) {
  2.             //重新分组排序
  3.             e.rows.sort(sortByRowLevel);
  4.         }

  5.         function sortByRowLevel(a, b) {
  6.             if (a.rowlevel > b.rowlevel) {
  7.                 return 1;
  8.             }

  9.             if (a.rowlevel == b.rowlevel)
  10.                 return 0;      
  11.             
  12.             return -1;
  13.             
  14.         }
复制代码

Rank: 3Rank: 3

地板
发表于 2014-5-8 11:48:00 |只看该作者
ender.luk 发表于 2014-5-8 11:29

可以以demo中的grouping.html为例子,修改代码如下
      
function onDrawGroup(e) {  
           var salary = 0;
           for (var i = 0;i < e.rows.length; i++) {
               salary = salary + parseInt(e.rows.salary,10);
           }
           
          var salary_string = salary.toString();
         
          e.rows.sort(sortByAge);
         
         
          for (var i = 0, l = Genders.length; i < l; i++) {
                var g = Genders;
                if (g.id == e.value && !g.group)
                {
                  g.group = true;
                  e.rows.add({gender:e.value,salary:salary_string});
                }
            }
            
            
           
           e.cellHtml = "性别:" + getGenderText(e.value) + "(" + e.rows.length + ")";
        }
        
        function sortByAge(a, b) {
        
          if (a.age > b.age) {         
                return 1;
            }

            if (a.age == b.age)
                return 0;      
            
            return -1;
            
        }

Rank: 8Rank: 8

5#
发表于 2014-5-8 13:02:01 |只看该作者
ender.luk 发表于 2014-5-8 11:48
可以以demo中的grouping.html为例子,修改代码如下
      
function onDrawGroup(e) {  

不能在ondrawgroup里面自定义排序,因为表格的数据他有一个是数据源,一个是视图数据,当你排序之后,视图数据中的一部分被修改了顺序,但是键盘的导航还是对最初的整个视图数据进行的导航,所以导致了定位的错误

处理方式目前只有一个,就是你在把整体的数据进行一个排序,再把排序好的数据给到表格,再分组,就正确了

Rank: 3Rank: 3

6#
发表于 2014-5-8 14:43:56 |只看该作者
factory 发表于 2014-5-8 13:02
不能在ondrawgroup里面自定义排序,因为表格的数据他有一个是数据源,一个是视图数据,当你排序之后,视图数 ...

试过修改testdb.cs中searchemployees的默认排序

但是不生效,分组后,就会被打乱。
分组的时候groupBy也有指定的排序,就把记录集合打乱了吧

即使是同一个分组也会被打乱,不值得用了快速排序还是怎么了

Rank: 8Rank: 8

7#
发表于 2014-5-8 18:36:51 |只看该作者
ender.luk 发表于 2014-5-8 14:43
试过修改testdb.cs中searchemployees的默认排序

但是不生效,分组后,就会被打乱。

我们看下

Rank: 3Rank: 3

8#
发表于 2014-5-8 21:18:14 |只看该作者
本帖最后由 ender.luk 于 2014-5-8 21:31 编辑
lost 发表于 2014-5-8 18:36
我们看下

刚看了了3.4的版本 ,开始以为可以,仔细测了,还是不行。

把一页显示记录设置到100就不可以了

Rank: 8Rank: 8

9#
发表于 2014-5-9 10:34:54 |只看该作者
ender.luk 发表于 2014-5-8 21:18
刚看了了3.4的版本 ,开始以为可以,仔细测了,还是不行。

把一页显示记录设置到100就不可以了 ...

排序在你后台实现,全部排序好了再返回给前台,前台直接groupBy,不要再加上排序参数了

Rank: 3Rank: 3

10#
发表于 2014-5-9 14:10:17 |只看该作者
factory 发表于 2014-5-9 10:34
排序在你后台实现,全部排序好了再返回给前台,前台直接groupBy,不要再加上排序参数了 ...

这样修改吗?
        grid.groupBy("gender");

试过不行,默认使用createtime排序,开到一页100行就不行

我用的论坛的例子

Archiver|普加软件

GMT+8, 2024-5-18 18:02 , Processed in 1.031961 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部