【问题标题】:Kendo Grid not sorting an alphanumeric column properly (Natural sort)Kendo Grid 未正确排序字母数字列(自然排序)
【发布时间】:2013-10-15 17:21:21
【问题描述】:

我在我的 asp.net mvc 4 项目中使用 Kendo Grid。我有最新版本的剑道 UI。网格上的其中一列具有(最初未排序)之类的数据..

 MS1
 MS2
 MS3
 MS2345
 MS4

当我对列进行排序时,数据显示为...

 MS1
 MS2
 MS2345
 MS3
 MS4

而不是...

 MS1
 MS2
 MS3
 MS4
 MS2345

这是我对列进行排序时所期望的。

我做错了什么?

编辑:

根据我目前得到的信息(谢谢大家),我想做的是自然排序。我在数据库中有超过 100,000 条记录。由于系统中有大量记录,我在服务器端进行所有排序和过滤。

解决方案:

以下解决方案对我不起作用,因为我们的系统非常大,但以防万一您想知道。

Telerik 的人回答说:“为了做到这一点,你需要使用自定义绑定。然后你就可以完全控制数据操作,例如分页和排序。我找到了一些很好的资源,如何在 .NET 中实现自然排序: http://www.interact-sw.co.uk/iangblog/2007/12/13/natural-sorting"

【问题讨论】:

  • 您看到的排序顺序是正确的,因为数据是字母数字的 - 这就是这些值在作为字符串排序时的排序方式。你是在做你的排序服务器端还是客户端?
  • 服务器端因为数据库中的记录太多了。

标签: asp.net-mvc asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc


【解决方案1】:

正如@StephenByrne 所说,字符串排序可以作为您的结果。为了实现您正在寻找的内容,您应该执行“自然排序

您可以做的是:在剑道网格中,将列设为不可排序。然后使用 JavaScript 点击事件触发以下任何一种方法来执行“自然排序

这里有几个例子,你可以如何做到这一点

【讨论】:

  • 我在数据库中有超过 100,000 条记录。由于系统中有大量记录,我正在服务器端进行所有排序和过滤。
  • 您可以在 C# 或数据库中进行“自然排序”,请参阅 SQL Server 中的自然排序示例stackoverflow.com/a/14869859/942855
  • 我们正在使用 EF 和 kendo .ToDataSourceResult(request) 进行排序/分页/分组/等。
  • 我正在通过 MVC 创建我的网格 - 我的理解是没有办法将自定义 JS 排序函数绑定到 MVC 网格,只能在 jQuery 中创建一个(来源:telerik.com/forums/custom-sort-example-for-mvc-wrappers)。你说有吗?如果是这样,我将如何完成?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
相关资源
最近更新 更多