【问题标题】:Kendo Grid: How to sort (and filter) a column bound to a simple json objectKendo Grid:如何对绑定到简单 json 对象的列进行排序(和过滤)
【发布时间】:2015-02-08 09:48:31
【问题描述】:

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

我采用了在线example(如果我添加可排序和可过滤,它们也不适用于类别字段),并对其进行了非常小的修改,只是为了使用非常简单的本地json数据(制作在学习网格的同时更容易看到我在做什么。

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

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

在数据源中,类别字段由一个简单的 json 对象组成,包含 2 个字段 code 和 description(其中 code 它是 value 字段,而 description 是要显示的内容)...

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'},
]

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

提前感谢您的帮助!

【问题讨论】:

  • 您的链接不包含您的示例。请检查。

标签: javascript jquery kendo-ui kendo-grid


【解决方案1】:
  <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>

【讨论】:

  • 谢谢你ashutosh jambhale。我只是在附加的组合框中添加了信息,所以现在字段名称中包含 .description,组合现在似乎发布了代码。我试过input.on('change', function () { var val = input.val(); //var dataItem = input.dataItem(); options.model.set(options.field, val + 'xx'); }); 但它没有用(val() 是代码)。关于这最后一块拼图的想法?干杯
  • 其实我想上面的(机智的组合)是一个不同的问题,所以我想我会在新帖子中添加(我也可以正确格式化)..stackoverflow.com/questions/28405048/…跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 2022-01-10
相关资源
最近更新 更多