具有条件格式的Kendo Grid下拉列

时间:2014-01-23 22:46:04

标签: kendo-grid

我正在处理一个网格,其中一些列是布尔值(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" }
            ]
        });
};

1 个答案:

答案 0 :(得分:0)

如果你能给我们完整的代码会更好。在提供任何解决方案之前,更容易在本地检查但请尝试在模板中使用以下内容。如果它没有帮助,请使用完整代码更新您的帖子,以便我可以重新检查。感谢。

template: "<td role='gridcell'> #= FreeAndReducedInd == true ? 'Yes' : 'No' # </td>"