3

这是我的问题...

我希望有一个下拉列表绑定到我的网格,如下所示:


{
     field: "ContactTypeId",
     hidden: true
},
{
     field: "ContactTypeName",
     title: "Type",
     editor: ContactTypeAddressCombo
}

function ContactTypeAddressCombo(container, options) {
                $('<input placeholder="A" data-bind="value:ContactTypeId"/>')
                .appendTo(container)
                .kendoDropDownList({
                    autoBind: false,
                    dataTextField: "Name",
                    dataValueField: "ContactTypeId",
                    dataSource: {
                        type: "json",
                        serverFiltering: true,
                        transport: {
                            read: {
                                contentType: "application/json; charset=utf-8",
                                type: "POST",
                                url: "../Services/svcContact_Type.asmx/Search",
                                dataType: "json",
                                cache: false
                            },
                            parameterMap: function(options, operation) {
                                options.AddressFlag = 1;
                                options.PhoneFlag = 1;
                                options.EmailFlag = 1;
                                return kendo.stringify(options);
                            }
                        },
                        schema: {
                            data: "d"
                        }
                    },
                    index: 0
                });
            }

一切正常,除了当我向网格添加新行时。下拉列表加载正常并选择了一个项目,但除非我更改为另一个项目,否则网格将无法识别所选项目(即使选择了一个项目,网格的数据源也会发送 0)。

一种解决方案是让第一个项目始终为“选择一个”,值为 0,这将强制用户选择一个项目。但这远非理想。所以……还有其他建议吗?下拉列表是否有某种占位符?

谢谢

4

1 回答 1

3

这个问题在互联网上被多次讨论,每个用户都以不同的方式描述它。创建新项目时,您应该设置默认值,以便 MVVM 框架可以正确分配 DropDownList 的选定值,或者您应该在编辑事件的帮助下手动完成。

换句话说 - 您的模型属性不应为空 - 它应该是字符串或数字,否则当您使用 DropDownList 更改值时它不会正确更新(用于 DropDownList 的整个 dataItem 将被分配为值)。

这里有更多信息。

于 2013-03-01T22:00:21.097 回答