gpt4 book ai didi

javascript - 将 Kendo Grid 与 knockoutjs 行模板一起使用使过滤变得不可能

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:50 27 4
gpt4 key购买 nike

我目前正在为 MVVM 模式使用 knockoutjs 并为控件构建一个 Kendo Web 应用程序。我在剑道网格中过滤/分组数据时遇到一些问题。

我需要高度可定制的行,所以我根据这个示例选择使用行模板:

http://rniemeyer.github.io/knockout-kendo/web/Grid.html

我还需要与网格进行双向绑定(bind),因为我需要添加/删除/更新项目。

网格:

<div data-bind="kendoGrid: {    
data: LienActionIndicateurPourFicheCollection,
widget: indicateurWidget,
rowTemplate: 'indicateurRowTmpl',
useKOTemplates: true,
dataSource : {
schema: {
model: {
fields: {
Code: { type: 'string' },
Titre: { type: 'string' },
Note: { type: 'number' }
}
}
},
},
columns: [
{ title: '#', width: 30 },
{ field: 'Code', title: 'Code', width: 80 },
{ field: 'Titre', title: 'Titre', width: 150 },
{ field: 'Note', title: 'Note', width: 80 }]
}">
</div>

行模板:

<script id="indicateurRowTmpl" type="text/html">
<tr">
<td>
<button data-bind="visible: $root.isInEditMode, click: removeIndicateur"
class="common-button delete-button"></button>
</td>
<td data-bind='text: Code'></td>
<td data-bind='text: Titre'></td>
<td data-bind='text: Note'></td>
</tr>
</script>

当我使用网格时,它工作正常,期望当我使用分组/过滤时:它就像网格使用可观察对象而不是值来执行操作。

示例:当我根据“注释”整数值进行分组时:enter image description here

为防止这种情况发生,我在列定义中将“field: 'Note'”替换为“field: 'Note()'”:分组现在工作正常,因为网格使用整数值而不是函数。

但过滤仍然不可能:当我更改“Note()”后,列过滤器菜单已从数字过滤器更改为字符串过滤器。我想这是因为字段输入键“Note”不再与列输入键“Note()”匹配!

  • 我已尝试在字段定义中用“Note()”替换“Note”:不起作用。
  • 我在我的项目模型中用一个不可观察的变量替换了 Note observable:一切正常,但我无法再编辑这些值,但我想这样做。

感谢您的帮助!

编辑:这里是一个重现错误的 jsfiddle:http://jsfiddle.net/camlaborde/htq45/1/

EDIT#2 这是最终的解决方案,感谢 sroes:http://jsfiddle.net/camlaborde/htq45/7/

EDIT#3 最终解决方案加上内联网格版:http://jsfiddle.net/camlaborde/8aR8T/4/

最佳答案

如果您创建一个将项目作为普通 JS 对象返回的计算,它会起作用:

this.items.asJS = ko.computed(function() {
return ko.toJS(this.items());
}, this);

http://jsfiddle.net/htq45/2/

之所以将 ko.toJS(this.items) 直接放在绑定(bind)中不起作用,是因为剑道跟踪绑定(bind)中各个选项的方式。 Knockout.js 人 RP Niemeyer 教我这个:Dynamically enable/disable kendo datepicker with Knockout-Kendo.js

关于javascript - 将 Kendo Grid 与 knockoutjs 行模板一起使用使过滤变得不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21386545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com