当前位置: 首页 > 知识库问答 >
问题:

剑道DropDownList在网格中不绑定,直到选择后

逑禄
2023-03-14

我有一个可编辑的剑道网格,有一个字段是一个下拉列表。我有一个U_UserIdU_Name字段需要在该列中使用。名称显然会显示,而ID应该是用于绑定的。我已经在下面的示例中删除了我的数据源URL,但是DropDownList数据显示良好,包含名称和ID值列表。

我已经看了一段时间了,所以我可能错过了一些明显的东西。我对这个问题有一个相同的问题(下拉列表不绑定到该行中显示的用户,直到我单击下拉列表来展开它),但是我认为我的模型和字段是正确的,所以我不确定为什么我仍然不能得到下拉列表正确绑定。

这是我的网格和编辑器的JS:

$(document).ready(function () {
    var grid = $("#grid").kendoGrid({
        dataSource: {
            type: "json-ajax",
            transport: {
                read: {
                    url: myUrl,
                    type: "GET"
                }
            },
            batch: true,
            pageSize: 20,
            schema: {
                data: "Data",
                total: "Total",
                model: {
                    id: "OrderId",
                    fields: {
                        O_OrderNumber: {
                            editable: false
                        },      
                        O_Date: {
                            editable: false, type: "date"
                        },
                        O_InvoiceNumber: {
                            editable: false
                        },
                        O_Status: {
                            editable: false
                        },
                        O_DueDate: {
                            editable: false, type: "date"
                        },
                        U_UserId: {
                            editable: true
                        },
                        U_Name: {
                            editable: false
                        },
                        O_VendorId: {
                            editable: false
                        },
                        O_TrackingNumber: {
                            editable: false
                        }  
                    }
                }
            },
        },
        scrollable: false,
        editable: true,
        pageable: true,
        columns: [
                    {
                        field: "O_OrderNumber",
                        title: "Order #",
                        hidden: false
                    },
                    {
                        field: "O_Date",
                        title: "Pull Date",
                        hidden: false,
                        type: "date",
                        format: "{0:MM/dd/yyyy}"
                    },
                    {
                        field: "O_InvoiceNumber",
                        title: "Invoice #",
                        hidden: false
                    },
                    {
                        field: "O_Status",
                        title: "Status",
                        hidden: false
                    },
                    {
                        field: "O_DueDate",
                        title: "Due Date",
                        hidden: false,
                        type: "date", 
                        format: "{0:MM/dd/yyyy}"
                    },
                    {
                        field: "U_UserId",
                        title: "Owner",
                        hidden: false,
                        width: 130,
                        editor: ownerDropDownEditor, 
                        template: "#=U_Name#"
                    },
                    {
                        field: "O_VendorId",
                        title: "Vendor",
                        hidden: false
                    },
                    {
                        field: "O_TrackingNumber",
                        title: "Tracking #",
                        hidden: false
                    }
        ]
    }).data("kendoGrid");
});

function ownerDropDownEditor(container, options) {
    $('<input required name="' + options.field + '" />')
        .appendTo(container)
        .kendoDropDownList({
            autoBind: false,
            dataTextField: "Name",
            dataValueField: "UserId",
            dataSource: {
                type: "json",
                transport: {
                    read: {
                        url: myOtherUrl,
                        type: "GET"
                    }
                }
            }
        });
} 

编辑:出于好奇,我尝试更改我的dropdown列表,使DataTextField和DataValueField都是UserId,并且选择是立即进行的,但是显示的是ID(int)值而不是Name(string)。

共有1个答案

黄查猛
2023-03-14

因此,进一步研究我上面的编辑,我发现了这篇Telerik文章,它听起来好像下拉列表实际上是由一个对象绑定的,而不是由下拉列表值绑定的。有一个数据值原语属性可以添加,以便按值绑定。我更新了我的编辑器,现在它的行为符合预期:

function ownerDropDownEditor(container, options) {
    $('<input required name="' + options.field + '" data-value-primitive="true" />')
        .appendTo(container)
        .kendoDropDownList({
            autoBind: false,
            dataTextField: "Name",
            dataValueField: "UserId",
            dataSource: {
                type: "json",
                transport: {
                    read: {
                        url: myOtherUrl,
                        type: "GET"
                    }
                }
            }
        });
}
 类似资料:
  • 我试图使用一对剑道下拉列表来过滤AngularJS中的数据集。其中一个数据源使用静态可观察数组按状态筛选数据集;另一个数据源是数据集的“区域ID”列的一组不同值,也存储为可观察数组。当状态下拉列表更改时,区域下拉列表应该从新过滤的数据中重新加载区域列表。这是可行的,但是选定的值最终会被忽略,即使应该代表选定值的模型仍然具有正确的值,并且数据仍然被相同的值正确过滤。打开下拉列表,然后单击它,使其按应

  • 我是剑道MVC的新手,所以请耐心等待。我有以下代码来创建一个剑道MVC DropDownList For: "原始"ViewModel的Kind"属性对应于从DataSource-Read终结点接收的数据的"Code"属性。 请指教。 谢谢你,屋大维

  • 我有剑道下拉列表,我想选择下拉列表的选择值。我得到了选定项目的文本,但不是应该是ID的值。 绑定数据与Dropdown列表剑道 使用剑道下拉列表绑定选择函数。

  • 我想把剑道下拉列表加入我的表格。一切都会好的,除了一件事。当我想用默认的剑道创建工具栏“添加记录”时,我不能绑定从dropdownlist数据源获取的第一个值。 数据源工作正常。DropDownlist也很好用。如果我手动从dropDownlist中选择任何东西,一切正常。 我也试过了。除了“索引”之外,我试图手动从数据源中选择第一项。从视觉上看,它工作得很好。即使选择了第三项,但当我单击“更新”

  • 我的项目中有剑道网格 其中一个圆柱,例如Naam圆柱,看起来像这样 它所做的是在弹出窗口中打开一个剑道编辑器,其中包含产品的价值。纳姆 弹出窗口有剑道编辑器、OK和Cancel按钮 这是我的网格图像。带3个点的圆圈是打开剑道编辑器的按钮 这是我的剑道编辑器弹出窗口的图片,文本已经编辑过了 到现在为止,一直都还不错。我在编辑器中获得Naam值。 当我点击OK时,我会打电话给你 它还没有完成; 这就是

  • 我可以通过下面的模板场景将剑道下拉列表添加到剑道网格中: 然而,问题是如何访问dropdownlist以获取其值/文本/索引。到目前为止,我可以使用以下方法获取所选行数据: 这里是JSFiddle代码 请帮帮我,我卡住了。 提前感谢。