【问题标题】:How to sort numeric with string values in Kendo-Grid如何在 Kendo-Grid 中使用字符串值对数字进行排序
【发布时间】:2013-09-25 19:38:00
【问题描述】:

我正在使用 Kendo-Grid,它有一列具有数字和字符串 (NA) 的值。知道如何对它们进行排序吗?

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    您可以使用自定义比较功能对它们进行排序。下面是一些示例代码,它会将带有 'N/A' 的项目放在顶部:

    $("#grid").kendoGrid({
      dataSource: [
        { price: 1 },
        { price: "N/A" },
        { price: 20 },
        { price: 2 }
      ],
      sortable: true,
      columns: [
        {
          field: "price",
          sortable: {
            compare: function(a, b) {
              var x = a.price;
              var y = b.price;
    
              if (x == 'N/A') {
                x = 0;
              }
    
              if (y == 'N/A') {
                y = 0;
              }
    
              return x - y;
            }
          }
        }
      ]
    });
    

    这是一个现场演示:http://jsbin.com/urUXOCa/1/edit

    【讨论】:

    • 这个演示运行良好,我对其进行了编辑并添加了一些值,它运行良好。但同样的逻辑对我不起作用。我认为原因可能是我没有使用 jQuery 并且我正在取消 Angular-Kendo。知道如何使它可排序:{compare:....}} 使用 angular-kendo
    • 在示例中,我们如何动态获取 a.price 列。至少如何将值字段获取到 var x = a.$field (类似的东西)。有可能吗
    • jsbin.com/yitugitece/edit?html,js,output 这个答案的一个版本使用安全的 css 和 jquery 引用
    【解决方案2】:

    它与http://jsbin.com/egoneWe/3/edit中的代码一起工作

    【讨论】:

    • 只需使用模板函数将零替换为您喜欢的任何字符串。谢谢 JPN,这篇文章对我很有帮助。
    • 这里是一个更新的 jsbin,带有到库的安全链接。 jsbin.com/sezipoqebu/1/edit?html,js,output
    【解决方案3】:

    将字段值设为数字。然后,如果需要,在显示时添加字符串。

    请参考这个寻求帮助:sorting numbers (dollar amt and percentage) not working

    【讨论】:

    • aaron - 如何在显示时添加字符串?能详细点吗?
    【解决方案4】:

    据我所知,没有办法为字段创建自己的排序函数。 我确实找到了http://sympletech.com/how-to-enable-case-insensitive-sorting-on-kendo-ui-grid/,有人在其中实现了您所要求的内容(他只是在进行不区分大小写的排序)。

    我不得不这样做一次(幸好在不可编辑的网格上,只是显示数据),我只是使用模板欺骗了网格。通过在数据绑定之前检查数据,向其中添加另一个属性来表示可以正确排序的数据,并将网格绑定到该列而不是原始列,但使用返回原始数据值的模板。

    见jsbinhttp://jsbin.com/ETaZOSu/1/edit

    【讨论】:

    • 从您的 jsbin 中,我无法理解您从哪里调用 valueTemplate(e)
    • 在网格上的列集合中。列:[ {字段:“名称”,标题:“名称”},{字段:“排序”,标题:“值”,模板:valueTemplate }]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2011-12-27
    • 2023-02-13
    • 2017-04-17
    • 2021-07-30
    • 2021-09-19
    相关资源
    最近更新 更多