[英]ExtJS paged combo with remote JSON store. Display selected value with paging
我有一個帶遠程存儲的ExtJS組合,它以JSON格式返回給我數據。 當我在第一頁上選擇一個值(例如)然后導航到另一個頁面時,組合顯示選擇了id,而不是值。
如何始終顯示所選值?
碼:
Ext.onReady(function() {
Ext.define('Model', {
extend: 'Ext.data.Model',
fields: ['title'],
idProperty: 'threadid'
});
var store = Ext.create('Ext.data.Store', {
pageSize: 50,
model: 'Model',
remoteSort: true,
proxy: {
type: 'jsonp',
url: 'http://www.sencha.com/forum/topics-browse-remote.php',
reader: {
root: 'topics',
totalProperty: 'totalCount'
},
simpleSortMode: true
}
});
var combo = Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Value',
store: store,
queryMode: 'remote',
displayField: 'title',
valueField: 'threadid',
pageSize: 50,
labelWidth: 50,
width: 300,
padding: '60 0 0 0'
});
Ext.create('Ext.window.Window', {
title: 'Hello',
height: 200,
width: 400,
layout: { type: 'vbox', align: 'center' },
items: combo
}).show();
})
示例: http : //jsfiddle.net/coshmos/5wT6H/
更多信息(案例研究):
我有一張表可以更新記錄。 我單擊一個項目,然后我的服務器從數據庫返回值。 然后出現帶有UI的窗口。 對於所有分頁組合,它只返回id。 所以,直到我沒有導航到帶有返回id的項目的頁面,我沒有看到值。 如果我禁用分頁並加載所有值,則所有值都按預期工作,但加載數千個值並不好。
它可以這樣修復:
Ext.override(Ext.form.field.ComboBox,{
findRecord: function(field, value) {
var foundRec = null;
Ext.each(this.lastSelection, function(rec) {
if (rec.get(field) === value) {
foundRec = rec;
return false; // stop 'each' loop
}
});
if (foundRec) {
return foundRec;
} else {
return this.callParent(arguments);
}
}
});
嘗試一下: http : //jsfiddle.net/5wT6H/3/
我改變了邏輯。 另外發送一個組合框值的Id,之后用此Id設置extraProxyParams並加載商店。 之后清理extraProxyParams。 因此,在用戶搜索另一個值之后,他可以執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.