Kendo 网格:如何对绑定到简单 json 对象的列进行排序(和过滤)

Kendo Grid: How to sort (and filter) a column bound to a simple json object

我看到了很多关于排序的问题,但对于我的非常简单的案例,我找不到任何问题。

我参考了网上的example(如果我添加了sortable和filterable,它们在category字段上也不起作用),并且稍微修改了一下,只是为了使用非常简单的本地json 数据(以便在学习网格时更容易看到我正在使用的内容。

因此,查看我要排序和过滤的类别字段,在我的列定义中我有 ....

 columns: [
  {
    ...
  {
    field: "Category",
    title: "Category",
    width: "180px",        
    editor: categoryDropDownEditor,
    template: "#=Category.description#"
  },

并且在数据源中,类别字段由一个简单的 json 对象组成,该对象具有 2 个字段代码和描述(将其编码为值字段,描述是要显示的内容)...

var gridData = [
{
....
ProductID : 1,
ProductName : "Chai",
Category : {
    code : '1',
    description : "Beverages",

 },
...
];

我已将可排序和可过滤属性添加到网格,但类别字段显示排序箭头(单击时切换),但列数据不排序或过滤。

我如何将排序和筛选来查看描述字段来进行这些操作?

请注意,我还附加了一个组合单元格编辑器

function createCombo(container, options, data) {
  var input = $('<input name="' + options.field + '" />')
  input.appendTo(container)
  var combobox = input.kendoComboBox({
    autoBind: true,
    filter: "contains",
    placeholder: "select...",
    suggest: true,
    dataTextField: "description",
    dataValueField: "code",
    dataSource: data,
  });

其中数据的形式

[ 
  {code: 'code1', description: 'desc1'},
  {code: 'code2', description: 'desc2'},
]

所以我需要该组合以正确的值填充该字段。

在此先感谢您的帮助!

  <script>

    var gridData = [
{
    ProductID: 1,
    ProductName: "Chai",
    Category: {
        code: '1',
        description: "beverages",

    }
},
 {
     ProductID: 1,
     ProductName: "bhai",
     Category: {
         code: '1',
         description: "aceverages",

     }
 },
  {
      ProductID: 1,
      ProductName: "dhai",
      Category: {
          code: '1',
          description: "zeverages",

      }
  }
    ];

    $(document).ready(function () {
        $("#grid").kendoGrid({
            dataSource: gridData,
            height: 550,
            groupable: true,
            sortable: true,
            pageable: {
                refresh: true,
                pageSizes: true,
                buttonCount: 5
            },
            columns: [{
                field: "ProductID",
                title: "Contact Name",
                width: 200
            }, {
                field: "ProductName",
                title: "Contact Title"
            }, {
                field: "Category.description",
                title: "Category",
                width: "180px",
                template: "#=Category.description#"
            }]
        });
    });
</script>