Jquery 剑道网格中的下拉列表输入

Jquery 剑道网格中的下拉列表输入,jquery,kendo-ui,kendo-grid,Jquery,Kendo Ui,Kendo Grid,快速解释我的问题:我有一个可编辑的剑道网格,其中一列是dropdownlist,定义如下: $('<input required data-text-field="fullName" data-value-field="approverGuid" data-bind="value:' + options.field + '"/>') .appendTo(container) .kendoDropDownList({ index: 0,

快速解释我的问题:我有一个可编辑的剑道网格,其中一列是dropdownlist,定义如下:

$('<input required data-text-field="fullName" data-value-field="approverGuid" data-bind="value:' + options.field + '"/>')
    .appendTo(container)
    .kendoDropDownList({
        index: 0,
        dataTextField: "fullName",
        dataValueField: "approverGuid",
        autoBind: false,
        dataSource: {
            transport: {
                read: {
                    dataType: 'json',
                    url: '/requisitions/ajax/getreqapprovers?account=' + accountNum
                }
            },
        },
        value: options.field
    });
$(“”)
.appendTo(容器)
.kendoDropDownList({
索引:0,
dataTextField:“全名”,
dataValueField:“approverGuid”,
自动绑定:错误,
数据源:{
运输:{
阅读:{
数据类型:“json”,
url:'/requisions/ajax/getreqapprovers?account='+accountNum
}
},
},
值:options.field
});
我的问题是,在初始网格加载时,当我想要显示全名字段时,列只是一个常规的文本元素,由approverGuid字段填充。只要我在网格中单击,就会创建dropdownlist,现在我们可以看到与前面看到的approverGuid对应的正确全名。我可以在下拉列表update中选择任何名称,它会将approverGuid正确写入我的数据库,但它也会恢复到我网格中的approverGuid,因为dropdownlist元素已消失


关于如何在不丢失更新我的数据库所需的Guid值的情况下最初显示名称的任何建议?

如果我理解正确,您需要显示“全名”而不是“批准者Guid”

如果是这样,我希望您的数据源中有一个模型定义。如果不注意

例如:

一旦您有了一个模型,您就可以访问一个数据项,通过使用它,您可以为网格列定义一个模板

例如:

列:[
{
字段:“批准者GUID”,
标题:“批准者GUID”,
模板:函数(数据项){
var html=''+kendo.htmlEncode(dataItem.fullName)+'';
返回html;
},
编辑器:函数(容器、选项){
$('')
.appendTo(容器)
.kendoDropDownList({
索引:0,
dataTextField:“全名”,
dataValueField:“approverGuid”,
自动绑定:错误,
数据源:{
运输:{
阅读:{
数据类型:“json”,
url:'/requisions/ajax/getreqapprovers?account='+accountNum
}
},
},
值:options.field
});
}
}]

因此,现在模板将显示全名,一旦进入编辑模式,将显示下拉列表。希望这有助于

确切地说,我需要什么,用代码清楚地解释。认真的道具,谢谢!然而,更新后发生的有趣异常;我可以从下拉列表中选择一个新值,单击行上的更新(使用剑道网格内联编辑),新的approverGuid将写入DB,但旧名称值仍保留在网格中。如果我在下拉列表中单击后退,它将显示正确的对应名称。我还可以刷新整个网格,它将显示正确的名称。我不想强制刷新,但是,必须有一种方法可以让新选择的名称在不刷新的情况下显示在网格上。问题是,您的数据源更新url需要返回结果,如果您必须指定需要Json,并且如果您返回字符串或不返回任何内容,则会发生这种情况。例如:“更新:{dataType:'json'”,最好将更新后的项目作为json结果返回。如果不让我知道,我认为这就是问题所在。
var dataSource = new kendo.data.DataSource({
  schema: {
    model: {
       id: "ID",
       fields: {
         ID: { editable: false, nullable: true },
         approverGuid: { type: "number", validation: { required: true } },
         fullName: { type: "string", validation: { required: true } }
    }
  }
columns: [
        {
          field: "approverGuid",
          title: "approverGuid",
          template: function (dataItem) {
              var html = '<span class="">' + kendo.htmlEncode(dataItem.fullName) + '</span>';
                    return html;
          },
          editor: function (container, options) {
            $('<input required data-text-field="fullName" data-value-field="approverGuid" data-bind="value:' + options.field + '"/>')
            .appendTo(container)
             .kendoDropDownList({
                index: 0,
             dataTextField: "fullName",
             dataValueField: "approverGuid",
             autoBind: false,
             dataSource: {
               transport: {
                  read: {
                    dataType: 'json',
                    url: '/requisitions/ajax/getreqapprovers?account=' + accountNum
                }
             },
          },
          value: options.field
            });
           }
        }]