绑定对象的阵列,以剑道网格弹出多选

问题描述 投票:0回答:1

我想ID值对的数组绑定到剑道电网弹出编辑器。

得到的一切,为创造一个新的记录工作。弹出编辑器加载自定义编辑器,并成功地将数据提交给控制器。

问题是,当我尝试编辑记录。该记录显示正确的行中,但是当我尝试对其进行编辑,多选不成立的值。

网格标记

    $("#ProjectSites-SubContract-grid").kendoGrid({
        dataSource: {
            type: "json",                
            schema: {
                data: "Data",
                total: "Total",
                errors: "Errors",
                model: {
                    id: "Id",
                    fields: {
                        DateOfContract: { type: 'date', editable: true },
                        DateOfCompletion: { type: 'date', editable: true },
                        AmountOfContract: { type: 'number', editable: true },
                        Contractor: { defaultValue: { id: "", name: "" } }
                    }
                }
            },
        },
        columns: [            
        {
            field: "ScopeOfWork",
            title: "Scope of Work",
            template: "#=parseScopeOfWork(ScopeOfWork)#",
            editor: scopeOfWorkEditor
        },            
        ]
    });
});

编辑工作范围

function scopeOfWorkEditor(container, options) {
    $('<input  data-text-field="name" data-value-field="id" data-bind="value:ScopeOfWork"/>')
        .appendTo(container)
        .kendoMultiSelect({
            dataSource: {
                data: [
                    @foreach (var scopeOfWork in Model.AvailableScopeOfWork)
                    {
                        <text>{ id : "@scopeOfWork.Value", name : "@scopeOfWork.Text" },</text>
                    },
                ]
            }
        });

parseScopeOfWork - 这种方法家伙通过对象列表进行迭代,并且concats名称。

function parseScopeOfWork(scopeOfWork) {
    var result = "";
    for (var i = 0; i < scopeOfWork.length; i++) {
        result += scopeOfWork[i].Name;
        if (i < scopeOfWork.length - 1)
        {
            result += ", <br/>";
        }
    }
    return result;
}

下面是截图:

enter image description here

javascript jquery kendo-ui kendo-grid kendo-asp.net-mvc
1个回答
0
投票

你是SpaceOfWork绑定到新的widget,但小部件是如何知道你的模型?我的意思是,只是用data-bind好好尝试一下结合模型到小部件,它本身不能明白这。我有两个建议:

  1. 设置在widget的初始化值: .kendoMultiSelect({ value: options.model.ScopeOfWork Demo
  2. 绑定模型到小部件为好: let $multiSelect = $('<input data-text-field="name" data-value-field="id" data-bind="value:ScopeOfWork"/>'); kendo.bind($multiSelect, options.model); $multiSelect .appendTo(container) .kendoMultiSelect({ ... Demo

注:编辑类小区在这两个演示,看到的变化。

© www.soinside.com 2019 - 2024. All rights reserved.