网格编辑模式下的Kendo UI下拉列表

时间:2013-11-25 20:27:53

标签: kendo-ui kendo-grid

基本上我有一个Kendo UI Dropdownlist作为我的第一个名为“instrumentName”的网格列 在弹出编辑模式下,我可以在下拉列表中看到正确的instrumentName,但是当我更改值时会出现一个问题:

一旦我选择了新仪器,仪器ID就会显示在网格上(在后台)。更新的INSTRUMENT NAME应出现在网格上。

一旦我点击更新,它不会显示仪器名称,而是显示仪器ID(这是一个数字)。

一些代码段:

 instrDropDown.value(e.model.instrumentId);
 nodeGrid = $("#curvesGrid").kendoGrid({
      dataSource: new kendo.data.DataSource({ ... });
      columns: [
        {
            field: "instrumentName",
            editor: instrumentsDropDownEditor, template: "#=instrumentName#"
        },
        {
            field: "instrumentTypeName"      
        },
        edit: function(e){
            var instrDropDown = $('#instrumentName').data("kendoDropDownList"); 
            instrDropDown.list.width(350);  // widen the INSTRUMENT dropdown list
            if (!e.model.isNew()) {
                instrDropDown.value(e.model.instrumentId);
            }
        }
  });

这是我的Dropdown的模板编辑器:

function instrumentsDropDownEditor(container, options) {

    // INIT INSTRUMENT DROPDOWN !
    var dropDown = $('<input id="instrumentName" name="instrumentName">'); 
    dropDown.appendTo(container);
    dropDown.kendoDropDownList({
        dataTextField: "name",
        dataValueField: "id",
        dataSource: {
            type: "json",
            transport: {
                read: "/api/breeze/GetInstruments"
            },
        },
        pageSize: 6,
        //select: onSelect,
        change: function () { },
        close: function (e) {

        },
        optionLabel: "Choose an instrument"
    }).appendTo(container);
}

我是否需要在更改Dropdown时做一些特别的事情?

感谢。 鲍勃

1 个答案:

答案 0 :(得分:0)

dataFieldValue将保存为DropDownList。如果您希望保存name,则应将dataValueField定义为name

关于后台更新,这是默认行为,因为这是一个ObservableObject,因此会自动传播更改。如果您不想这样做,您可能应该尝试使用变量进行下拉,并在save事件中将其复制到实际字段。你真的需要这个吗?