【问题标题】:Grouping a grid using knockout-kendo使用淘汰赛剑道对网格进行分组
【发布时间】:2013-10-14 01:55:05
【问题描述】:

使用knockout-kendo中的knockout绑定语法,是否可以定义数据应该如何分组?理想情况下,我想禁用用户分组并通过绑定执行分组(或者我可能需要创建一个绑定来执行此操作?)

更新:

如果我将我的属性定义为 kendo.data.DataSource,这似乎可以正常工作

var dataSource = new kendo.data.DataSource({
    data: response,
    // group by the "category" field
    group: { field: "category" }
});

据我所知,在我看来,knockout-kendo 库并没有提供一个钩子来向它为您创建的数据源提供额外的可选参数......所以没有办法提供“组" 修饰符为您通过简化或选项语法传入的非 kendo.data.DataSource。

【问题讨论】:

  • 您使用什么作为绑定中的数据? kendo.data.DataSourceko.obsrevableArray。因为只能为kendo.data.DataSource 配置默认分组,或者您需要以 kendogrid 期望的格式手动对数据进行分组...
  • 这是一个 ko.observable,我通过淘汰赛剑道绑定。 kendoUI 将哪种格式解释为分组?目前 javascript 对象是扁平的,但我可以很容易地改变它。
  • 我正在看这个:kendoui.com/forums/kendo-ui-framework/data-source/… 看起来很有希望...

标签: knockout.js kendo-ui


【解决方案1】:

如果您不想将kendo.data.DataSource 直接用作您的数据(但在这种情况下我认为您应该),那么一种可能(虽然有点老套)的解决方案是在绑定中使用widget 选项.

当您指定 widget 可观察属性时,KO-Kendo 将使用创建的 Kendo 小部件设置其值。

<div data-bind="kendoGrid: { data: items, widget: widget }"> </div>

然后您可以订阅小部件更改事件并在数据源上设置分组:

this.widget = ko.observable();

this.widget.subscribe(function (value) {
   value.dataSource.group({ field: 'category' });
});

演示JSFiddle.

【讨论】:

  • 啊,太棒了 :) 我想我更喜欢更新数据源,因为我认为它不那么 hacky。希望可以更新淘汰赛剑道以包含此功能.. 可能类似于 data-bind="kendoGrid: { data: items, data-options : { group : { field: 'category' }}}"
  • 是的,已经有一个名为ko.kendo.setDataSource 的钩子,您也可以使用它。不知何故像这样:jsfiddle.net/kznC3/1 但这是一个全局钩子,所以它在每个 ko-kendo 绑定中使用,所以你需要小心你在那里写的内容并正确处理所有错误情况。
  • 谢谢,太完美了! :) 以这种方式修改库并不理想,但绝对是我正在寻找的结果。
  • ko.kendo.setDataSource 本来是可覆盖的:来自source: //utility to set the dataSource with a clean copy of data. Could be overridden at run-time. 所以覆盖它就可以了。它的唯一缺点是我已经提到这是一个全局函数,它将应用于每个 ko-kendo 绑定。
猜你喜欢
  • 2019-11-19
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多