Sorting 分层Telerik RadGrids:如何消除排序错误?

Sorting 分层Telerik RadGrids:如何消除排序错误?,sorting,telerik,hierarchy,telerik-grid,Sorting,Telerik,Hierarchy,Telerik Grid,我使用的是分层的RadGrid(Telerik控件),但是在第二级的排序上有一些bug。我有两个级别,第二个级别是基于第一个级别加载的 第一级的列:Foo1、Foo2、Foo3 第二级列:Bar1、Foo2、Bar2、Bar3 绑定是通过函数发出的 问题: 如果扩展了第一层的一行(我们可以从第二层看到一个子网格),并且我想按Bar1排序,则会进行排序,但会发生错误: 未捕获的TypeError:无法调用null的方法“sort” 如果第一个级别的一行被展开(我们可以从第二个级别看到一个子网格),

我使用的是分层的RadGrid(Telerik控件),但是在第二级的排序上有一些bug。我有两个级别,第二个级别是基于第一个级别加载的

第一级的列:Foo1、Foo2、Foo3

第二级列:Bar1、Foo2、Bar2、Bar3

绑定是通过函数发出的

问题:

  • 如果扩展了第一层的一行(我们可以从第二层看到一个子网格),并且我想按Bar1排序,则会进行排序,但会发生错误:

    未捕获的TypeError:无法调用null的方法“sort”

  • 如果第一个级别的一行被展开(我们可以从第二个级别看到一个子网格),并且我想按Foo2对第二个级别进行排序,则会对父网格的(!)Foo2列进行排序

  • 如果第一个级别的两行被展开(我们可以看到第二个级别的两个子网格),并且我想按同一列对两个子网格进行排序,会出现一个奇怪的矩形,而不是升序/降序符号,我会得到与第一个问题中描述的相同错误,但不会发出排序

  • 我想解决这些问题,我的问题如下:

    如果我们有一个分层的RadGrid,并且第一级和第二级都是可排序的,那么我如何实现一种第二级以避免bug

    提前感谢您的回复。

    我找到了答案

    问题是列是自动生成的,自动生成列的分层RADGrid在Telerik中有一个bug。列未排序时,其标题(th标记)没有rgSorted类,也没有作为子项的输入标记。对列进行排序时,它有一个rgSorted类,并且在其中有一个输入。根据分拣方向,输入具有rgSortedAsc或rgSortedDesc类。所以,如果我想解决这个问题,我必须进行一次黑客攻击,这将与未来的版本不兼容。这很痛苦,因为我需要网格的第二级,我需要自动生成列(列在运行时显示),并且我希望能够对它们进行排序,但不幸的是,我的问题的答案是没有解决此错误的方法

    请在Telerik论坛上查看此帖子:

    我希望我已经从我所面临的折磨中拯救了一些程序员同事

    谢谢各位的评论,
    Lajos Arpad.

    如果这些是真正的bug(听起来像是),你最好与供应商(Telerik)谈谈。这些可能是我的bug,首先我想知道是否有人创建了一个可排序的分层网格,其中没有这些bug发生。如果有人成功地做到了这一点而没有出现问题,这意味着这些缺陷是可以修复的,我应该寻找正确的方向,但如果我看不到任何人能够做到这一点,那么这可能是Telerik分级RadGrid中的一个缺陷,特别是如果我能看到其他人尝试这样做,但也有同样的错误…你想到了哪种Telerik网格(AJAX、MVC、XAML、Winforms)?排序在他们的实时演示()中似乎可以正常使用层次结构,由于明显的原因,您无法在那里仅看到winforms网格。排序在演示中确实可以正常工作,但是,我的应用程序使用Javascript发送命令(不是默认设置),而且,服务器端的一个功能有助于排序,以跟踪排序的历史记录。此外,Telerik的排序只对当前页面进行默认排序,我的应用程序对整个数据源进行排序。它适用于所有的RadGrids,应用程序中有很多RadGrids,例外情况是RadGrids至少有两个层次,内部层次中至少有一列启用了排序。好的,经过很长一段时间的尝试和失败,我发现如果列不是自动生成的,内部排序实际上是有效的,但是列集是在运行时生成的,因此我需要一个自动生成列的解决方案来进行排序(以解决排序错误)。每当我尝试在两个不同的子网格中对同一列进行排序时,都会出现一个矩形而不是排序图标。关于这个问题,我有个好消息。Telerik团队向我保证,这个错误将在将来得到解决。