私はExtjs 4.07を使っている初心者です。私はコンボボックス(リモート)のqueryModeを作成しました。コンボボックスにはコースリストが表示されます。しかし、私が最近取り組んでいる教育機関は、すべてのコースを記録しました。だから、私は同じ表示フィールドを持つ2つのレコードを持つことになります。 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です。私がコンボボックス内のアイテムの1つを選択して、すべてをうまく送信すると、うまく動作します。問題は、後で私が間違ったコースを選択し、他のコースを選択した場合に発生します。
私は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>';
}
}
});
"この問題は後で私が間違ったコースを選択してもう1つを選択した場合に発生します"という例で問題を説明できますか?混乱しています。 – Maggie
Intro to Cプログラミング(CM12)を選択したかったのですが、誤ってIntro to Cプログラミング(CMPS1302)を選択しました。訂正をしても、私の最初の選択が提出されます。しかし、別のコースを選択した場合、 Software Engineerを選択し、Intro to C Programming(CMPS1302)を選択してください。 – winkie