Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 网格中的剑道下拉列表在选择后才绑定_Javascript_Jquery_Kendo Ui_Kendo Grid_Kendo Dropdown - Fatal编程技术网

Javascript 网格中的剑道下拉列表在选择后才绑定

Javascript 网格中的剑道下拉列表在选择后才绑定,javascript,jquery,kendo-ui,kendo-grid,kendo-dropdown,Javascript,Jquery,Kendo Ui,Kendo Grid,Kendo Dropdown,我有一个可编辑的剑道网格,带有一个下拉列表字段。我有一个U_UserId和U_Name字段,需要在该列中使用。名称显然会显示出来,而ID应该是用于绑定的。在下面的示例中,我删除了我的数据源URL,但是DropDownList数据显示得很好,有一个名称和ID值列表 我已经看了一段时间了,所以我可能遗漏了一些明显的东西。我遇到了一个与下拉列表相同的问题,在我单击下拉列表展开它之前,下拉列表不会绑定到该行中显示的用户,但我认为我的模型和字段是正确的,因此我不确定为什么仍然无法正确绑定下拉列表 以下是我

我有一个可编辑的剑道网格,带有一个下拉列表字段。我有一个U_UserId和U_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"
                    }
                }
            }
        });
} 

编辑:出于好奇,我尝试将我的dropdownlist更改为DataTextField和DataValueField都为UserId,并立即进行了选择,但显示的是ID int值而不是名称字符串。

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

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"
                    }
                }
            }
        });
}

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

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"
                    }
                }
            }
        });
}

仅供参考…只有当基础字段可为null且默认为null时,value-primitive vs-not-value-primitive才是我的问题,我从来没有在具有不可空字段的网格中遇到过下拉列表的问题。@Goose您能帮我一个忙吗?仅供参考…只有当基础字段可空且默认为空时,值原语与非值原语对我来说才是一个问题,我从来没有遇到过在不可为空字段的网格中出现下拉列表的问题。@Goose你也能帮我一下吗