Я новичок, используя Extjs 4.07. Я создал combobox (remote) queryMode. В поле со списком отображается список курсов. Однако институт, в котором я работаю, недавно переработал все курсы. Итак, у меня есть две записи с одинаковым полем отображения. Мой JSON выглядит так:Неверное отображение поля отображения Extjs Comobobox не разрешено?
{"result":[{"id":"90223","code":"CM12","description":"Introduction to C Programming","creditHours":"3.00","numberOfLabs":"0","contactHours":null,"chargeableCredits":null},
{"id":"2094","code":"CMPS1302","description":"Introduction to C Programming","creditHours":"3.00","numberOfLabs":"0","contactHours":null,"chargeableCredits":null}],"total":2}
Поле отображения - это описание, а поле значения - id. Когда я выбираю один из элементов в combobox и отправляю все работает нормально. Проблема возникает, если позже я выбрал неправильный курс и выберите другой.
Я пробовал установить idProperty: 'id', но безрезультатно. Когда я отправлю форму, значение, которое будет отправлено, будет выбрано первым после. Примечание: Это происходит только для описания повторяющихся курсов, все остальное работает нормально.
здесь некоторый код, чтобы помочь объяснить проблему:
Ext.define('SIS.model.ManageCourse', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'code', type: 'string'},
{name: 'description', type: 'string'},
{name: 'creditHours', type: 'float'},
{name: 'contactHours', type: 'float'},
{name: 'chargeableCredits', type: 'float'},
{name: 'numberOfLabs', type: 'float'},
{name: 'selected', type: 'bool'} //for update course pre-requisites
]
});
Ext.define('SIS.store.ClassCourse', {
extend: 'Ext.data.Store',
autoLoad: true,
autoSync: true,
model: 'SIS.model.ManageCourse',
pageSize: 7,
remoteFilter: true,
idProperty: 'id',
proxy: {
type: 'ajax',
api: {
read: 'course/select'
},
reader : {
type : 'json',
root : 'result',
totalProperty : 'total',
successProperty : 'success'
}
}
});
Ext.define('SIS.view.class.ClassCourseCombo', {
extend: 'Ext.form.ComboBox',
alias: 'widget.ClassCourseCombo',
name: 'courseId',
fieldLabel: 'Course',
store: 'ClassCourse',
queryMode: 'remote',
pageSize: 7,
displayField: 'description',
valueField: 'id',
allowBlank: false,
hideTrigger: true,
forceSelection: true,
minChars: 1,
lazyInit: false,
listConfig: {
getInnerTpl: function() {
return '<div class="combo-header">{description}</div>\
<div class="combo-item">{code}</div>';
}
}
});
Не могли бы вы объяснить вашу проблему на примере «Проблема возникает, если позже я выбрал неправильный курс и выберите другой». вызывает смущение. – Maggie
Предположим, я хотел выбрать Intro для программирования на C (CM12), но я выбрал Intro to C Programming (CMPS1302) по ошибке. Несмотря на то, что я сделаю исправление, мой первый отбор будет представлен. Однако, если я выберу другой курс, например. Software Engineer, а затем выберите Intro to C Programming (CMPS1302), это приемлемо. – winkie