jQuery MiniUI

标题: datagrid分组中的排序问题 [打印本页]

作者: ender.luk    时间: 2014-5-7 17:06:42     标题: datagrid分组中的排序问题

在onDrawGroup从新排序e.rows集合
grid1.groupBy("department" ,"asc")
e.rows.sort(sortByPersonID)
PersonID是row中的字段


显示上没问题

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


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

请问如何处理


谢谢

作者: felt    时间: 2014-5-7 17:22:37

把你的分组操作代码贴一下
作者: ender.luk    时间: 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.         }
复制代码

作者: ender.luk    时间: 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;
            
        }
作者: factory    时间: 2014-5-8 13:02:01

ender.luk 发表于 2014-5-8 11:48
可以以demo中的grouping.html为例子,修改代码如下
      
function onDrawGroup(e) {  

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

处理方式目前只有一个,就是你在把整体的数据进行一个排序,再把排序好的数据给到表格,再分组,就正确了
作者: ender.luk    时间: 2014-5-8 14:43:56

factory 发表于 2014-5-8 13:02
不能在ondrawgroup里面自定义排序,因为表格的数据他有一个是数据源,一个是视图数据,当你排序之后,视图数 ...

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

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

即使是同一个分组也会被打乱,不值得用了快速排序还是怎么了
作者: lost    时间: 2014-5-8 18:36:51

ender.luk 发表于 2014-5-8 14:43
试过修改testdb.cs中searchemployees的默认排序

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

我们看下
作者: ender.luk    时间: 2014-5-8 21:18:14

本帖最后由 ender.luk 于 2014-5-8 21:31 编辑
lost 发表于 2014-5-8 18:36
我们看下

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

把一页显示记录设置到100就不可以了
作者: factory    时间: 2014-5-9 10:34:54

ender.luk 发表于 2014-5-8 21:18
刚看了了3.4的版本 ,开始以为可以,仔细测了,还是不行。

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

排序在你后台实现,全部排序好了再返回给前台,前台直接groupBy,不要再加上排序参数了
作者: ender.luk    时间: 2014-5-9 14:10:17

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

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

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

我用的论坛的例子
作者: ender.luk    时间: 2014-5-9 14:15:26

ender.luk 发表于 2014-5-9 14:10
这样修改吗?
        grid.groupBy("gender");

collapseGroupOnLoad="true"后不行

谢谢
作者: factory    时间: 2014-5-9 16:08:47

ender.luk 发表于 2014-5-9 14:15
collapseGroupOnLoad="true"后不行

谢谢

我们检查下原因
作者: ender.luk    时间: 2014-5-14 11:20:15

factory 发表于 2014-5-9 16:08
我们检查下原因

按照版主的提示

最近仔细测试了下。发现在ie,firefox下没问题


在chrome34.0.1847.116下有问题
作者: factory    时间: 2014-5-14 13:30:22

ender.luk 发表于 2014-5-14 11:20
按照版主的提示

最近仔细测试了下。发现在ie,firefox下没问题

你这样,
grid.groupBy("xxx");不要带排序顺序

然后还要哪个字段进行排序,再加上
grid.sortBy("yyyy", "asc/desc");
作者: ender.luk    时间: 2014-5-14 14:05:11

factory 发表于 2014-5-14 13:30
你这样,
grid.groupBy("xxx");不要带排序顺序

谢谢。这个方法试过了。

即使是ie,ff,如果分组的值是'',空白字符串,
那么分组的顺序就会错乱
譬如gender=['' ,'mail','female']

chrome的排序无论分组字段有没有空白字符串,都是排序错乱
作者: ender.luk    时间: 2014-5-14 14:07:56

factory 发表于 2014-5-14 13:30
你这样,
grid.groupBy("xxx");不要带排序顺序

另外即使groupBy('xxxx')不带排序顺序,后台sortField都会被先设置为xxxx
作者: factory    时间: 2014-5-14 14:21:19

ender.luk 发表于 2014-5-14 14:07
另外即使groupBy('xxxx')不带排序顺序,后台sortField都会被先设置为xxxx

能否提供一个可以重现问题的HTML例子? 数据给一些静态的即可,然后打包上传上来
作者: ender.luk    时间: 2014-5-14 15:19:15

factory 发表于 2014-5-14 14:21
能否提供一个可以重现问题的HTML例子? 数据给一些静态的即可,然后打包上传上来 ...

图例是firefox,chrome的结果截图。
重现例子是使用在线例子的grouping来修改,包括在附件中

[attach]4481[/attach][attach]4480[/attach]


[attach]4482[/attach]

作者: 微风香水    时间: 2014-6-12 17:13:32

我今天正好也碰到和楼主同样的问题,在google浏览器下 就出现这个问题 ie和火狐没任何问题.这个问题解决了一定要在这里回复下!谢谢~
作者: factory    时间: 2014-6-13 10:53:09

微风香水 发表于 2014-6-12 17:13
我今天正好也碰到和楼主同样的问题,在google浏览器下 就出现这个问题 ie和火狐没任何问题.这个问题解决了一 ...

针对分组之后的各个组内排序,目前还无法支持
作者: 微风香水    时间: 2014-6-17 13:29:30

factory 发表于 2014-6-13 10:53
针对分组之后的各个组内排序,目前还无法支持

也就是说 在google浏览器下只能是错乱的顺序了??
作者: felt    时间: 2014-6-17 13:51:03

微风香水 发表于 2014-6-17 13:29
也就是说 在google浏览器下只能是错乱的顺序了??

这个是chrome浏览器自身的bug,我们修复一下,下周更新
作者: 微风香水    时间: 2014-6-17 17:04:19

felt 发表于 2014-6-17 13:51
这个是chrome浏览器自身的bug,我们修复一下,下周更新

好的 非常感谢




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2