我在用于添加和编辑我的一个模型的表单上有一个组合框。组合框绑定的值列表可能会非常大(1,000条记录),所以我需要使用带分页的远程数据存储来防止必须一次加载所有值。在添加表单中,这很好,但是当我尝试使用表单编辑我的模型时,我无法将值可靠地设置为组合框。Ext JS 4.2 Combobox与远程存储和分页默认值问题
当组合框加载时,商店加载前50个记录。问题是,在设置值之前,组合框setValue函数仅在商店中为该记录搜索加载的值。如果所选记录不在商店的前50个记录中,则setValue不会找到它并且该值未设置。
我已经创建了一个的jsfiddle演示该问题:http://jsfiddle.net/mgolus/Z3Jpy/
的代码如下:
var testVendorId;
testVendorId = 30; // Works
//testVendorId = 60; // Doesn't Work :-(
Ext.onReady(function() {
var addUserForm = Ext.create('Ext.form.Panel', {
renderTo: Ext.getBody(),
model: 'Test.model.CatalogItem',
items: [
{
xtype: 'textfield',
name: 'number',
fieldLabel: 'Number'
},
{
xtype: 'combobox',
name: 'vendorId',
fieldLabel: 'Vendor',
forceSelection: true,
store: {
model: 'Test.model.Vendor',
autoLoad: true,
pageSize: 50
},
displayField: 'name',
valueField: 'id',
pageSize: 50 // I know this just needs to be any value > 0 to show the pager, just putting 50 for consistency
}
],
});
addUserForm.down('combobox').getStore().on('load', function() {
var user = Ext.create('Test.model.CatalogItem', { id: 1, number: 'T001', vendorId: testVendorId });
console.log(user);
addUserForm.loadRecord(user);
});
});
Ext.define('Test.model.CatalogItem', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id' },
{ name: 'number' },
{ name: 'vendorId' }
]
});
Ext.define('Test.model.Vendor', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id' },
{ name: 'name' }
],
proxy: {
type: 'jsonp',
url: 'http://pmvitals.com/vendors.aspx',
reader: {
root: 'data'
}
}
});
当所选择的ID(testVendorId设置在顶部)为30,组合框与填充默认值。如果您将该ID设置为50以上的任何值,则该值将不会填充,因为该值不存在于商店的第一页中。
任何帮助,非常感谢!