在Grid ComboBox编辑器模板

时间:2016-08-03 12:35:43

标签: kendo-ui kendo-grid mvc-editor-templates kendo-combobox

我设置了一个Kendo Grid,其中包含一个分配了ComboBox编辑器模板的列。这很好用,并检索我期望的项目:

columnSchema.push({ field: "Comment", title: 'Comment', editor: commentDropDownEditor, template: "#=Comment.Description#" });

产生以下内容:

Grid ComboBox column

我的问题是我现在正在尝试扩展“注释”列的属性,以便用户可以输入新项目,即注释,这些注释将被保存到数据库以供重用。

到目前为止,我已经完成了以下工作......

设置commentDropDownEditor功能:

function commentDropDownEditor(container, options) {
    $('<input name="' + options.field + '"/>')
        .appendTo(container)
        .kendoComboBox({
            suggest: true,
            change: onComboBoxChange,
            autoBind: false,
            optionLabel: "Select comment...",
            dataTextField: "Description",
            dataValueField: "ID",
            dataSource: {
                type: "json",
                autoSync: true,
                transport: {
                    read: "CommentsAsync_Read",
                    create: {
                        url: "CommentsAsync_Create",
                        dataType: "json"
                    }
                }
            }
        });
    $('<span class="k-invalid-msg" data-for="' + options.field + '"></span>').appendTo(container);
}

change事件连接到以下函数:

function onComboBoxChange(e) {
    var combo = e.sender;
    // check if new value is a custom one
    if (!combo.dataItem()) {
        // select the newly created dataItem after the data service response is received
        combo.one("dataBound", function () {
            combo.text(combo.text());
        });

        // create a new dataItem. It will be submitted automatically to the remote service (autoSync is true)
        combo.dataSource.add({ Description: combo.text() });
    }
}

我可以通过控制台窗口看到onComboBoxChange函数(包括将新项添加到组合框数据源的行),但关联的Create传输函数未被执行该项目也未添加到Combo Box

Create中的

Controller函数如下:

[HttpPost]
public async Task<ActionResult> CommentsAsync_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<Comment> comments)
{
    if (comments.Any())
    {
        //await _manager.CreateCommentAsync(comments);
    }
        return Json(comments.ToDataSourceResult(request, ModelState));
}

我有什么遗漏/做错了让这个工作?

0 个答案:

没有答案