我正在处理一个网格,其中一些列是布尔值(true / false)。我希望它们在列中显示为“是/否”。我也使用下拉列表来更改值。我遇到的问题是,一旦我从下拉列表中选择值,当我离开该行时它不会显示新值。但是,只有我从“不”变为“是”。我认为这与我的模板和下拉菜单之间的交互有关?该值未从模板的下拉列表设置为“是”,因此它将落入“无”逻辑。
以下是我的下拉数据:
indData = [
{ Text: "Yes", boolValue: "true" },
{ Text: "No", boolValue: "false" }
];
我对该专栏的定义: 复制代码
{
field: "FreeAndReducedInd", width: "150px",
editor: indDropDownEditor,
title: "Free and Reduced",
template: ("# if (FreeAndReducedInd == true) { #" + "Yes" + "# } else { #" + "No" + "#}#")
},
编辑代码:
复制代码
function indDropDownEditor(container,options){
$('<input data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "Text",
dataValueField: "boolValue",
dataSource: indData
});
};
我有什么不对?
感谢
莉莎
更新 - 我得到了剑道的答案,他们建议我添加一个自定义活页夹,这似乎有效。
kendo.data.binders.widget.boolValue = kendo.data.Binder.extend({
init: function (widget, bindings, options) {
kendo.data.Binder.fn.init.call(this, widget.element[0], bindings, options);
this.widget = widget;
this._change = $.proxy(this.change, this);
this.widget.bind("change", this._change);
},
refresh: function () {
var value = this.bindings.boolValue.get();
this.widget.value(value.toString());
},
change: function () {
var value = this.widget.value();
this.bindings.boolValue.set(value === "true");
},
destroy: function () {
this.widget.unbind("change", this._change);
}
});
我还修改了我的编辑器:
function indDropDownEditor(container, options) {
$('<input data-bind="boolValue:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "Text",
dataValueField: "boolValue",
dataSource: [
{ Text: "Yes", boolValue: "true" },
{ Text: "No", boolValue: "false" }
]
});
};
答案 0 :(得分:0)
如果你能给我们完整的代码会更好。在提供任何解决方案之前,更容易在本地检查但请尝试在模板中使用以下内容。如果它没有帮助,请使用完整代码更新您的帖子,以便我可以重新检查。感谢。
template: "<td role='gridcell'> #= FreeAndReducedInd == true ? 'Yes' : 'No' # </td>"