我正在尝试使用下拉选择作为我的一个列的编辑器,定义为:
function phoneTypeEditor(container, options) {
$('<input required name="' + options.field + '" data-text-field="typeName" data-value-field="typeId" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataSource: [
{
"typeName": "Work",
"typeId": 1
},
{
"typeName": "Branch",
"typeId": 2
},
{
"typeName": "Home",
"typeId": 3
},
{
"typeName": "Mobile",
"typeId": 4
}
],
close: function()
{
}
});
}
在我的模特中,我有:
model: {
id: 'phoneId',
fields: {
phoneId: {
type: 'number'
},
type: {
type: 'string',
editable: true,
defaultValue: {
typeId: 1,
typeName: "Work"
},
},
tel: {
type: 'string',
editable: true
}
}
}
最后我的专栏:
{
field: 'typeId',
headerTemplate: '<b>Type</b>',
filterable: false,
editor: phoneTypeEditor,
width: '80px',
template: '#=typeName#'
},
但是当我尝试在网格中创建一行时,我的帖子数据如下所示:
phoneId:0
type[typeId]:1
type[typeName]:Work
tel:
typeName:
contactId:97558
应该是:
phoneId:0
typeId:1
typeName:Work
tel:
typeName:
contactId:97558
我的网格中有一个很薄且空的新行。
如何让它正常工作?
PS如果我没有:
typeName: {
type: 'string'
}
在我的模型中,我收到一条错误,指出typeName未定义。
我现在有:
model: {
id: 'phoneId',
fields: {
phoneId: {
type: 'number'
},
typeId: {
type: 'number',
defaultValue: 1
},
tel: {
type: 'string',
editable: true
},
typeName: {
type: 'string',
defaultValue: 'Work',
}
}
}
和...
columns: [
{
field: 'phoneId',
headerTemplate: '<b>Phone Id</b>',
filterable: false,
width: '50px',
hidden: true
},
{
field: 'typeId',
headerTemplate: '<b>Type</b>',
filterable: false,
editor: phoneTypeEditor,
width: '80px',
template: '#=typeName#'
},
{
field: 'tel',
headerTemplate: '<b>Number</b>',
filterable: false,
}
],
但现在当我更改下拉列表中的选项时,似乎您没有更改它,但项目的实际数字ID已更改,而不是文本。我怎样才能使typeId和typeName都改变?