我有一个使用远程存储和远程分页的网格,因为我有太多记录。主网格的存储是:
Ext.define('ArD.store.RecordsListStore', {
extend: 'Ext.data.Store',
model: 'ArD.model.RecordsListModel',
autoLoad: true,
autoSync: true,
remoteSort: true,
remoteFilter: true,
pageSize: 15,
proxy: {
type: 'ajax',
actionMethods: 'POST',
api: {
read: g_settings.baseUrl + 'index.php/recordslist/getAll',
destroy: g_settings.baseUrl + 'index.php/recordslist/deleteRecord'
},
reader: {
type: 'json',
root: 'data',
totalProperty: 'totalCount',
successProperty: 'success'
},
writer: {
root: 'data',
writeAllFields: true,
encode: true
}
}
});
然后我填充我的网格,一切都很好。但问题是我有一个看起来像这样的组合框:
{
xtype: 'combo',
id: 'records_list_form_id',
emptyText: 'Choose Form',
editable: false,
store: 'FilterRecordsByForm',
displayField: 'title',
valueField: 'id',
lastQuery: '',
triggerAction: 'all',
queryMode: 'remote',
typeAhead: false,
width: 200,
listeners: {
select: this._filterRecords
}
}
当我从组合框中选择一些东西时,就有了这个功能:
_filterRecords: function()
{
var recStore = Ext.getStore('RecordsListStore');
var a = Ext.getCmp('records_list_form_id').getValue( );
var rec = Ext.getStore('FilterRecordsByForm').getAt(a);
console.log(recStore);
},
主要只是尝试一些东西,但我可以从组合框中获取所选元素的ID,这就是我所在的位置。
我需要的是使用id来创建一个新的查询,使用我的AJAX API(PHP / SQL后端)并使用与此id相关的信息填充网格。在我的情况下,我有1:M关系,所以当我传递Id时,我希望M记录在旧网格的位置呈现。
由于
Leron
答案 0 :(得分:1)
使用filter()
方法。提供您需要过滤的信息,并且商店对象将自动从服务器请求更新的信息(您已经配置了remoteFilter)。
答案 1 :(得分:0)
查看Ext.Ajax()以对服务器端进行按需ajax调用以加载数据,然后使用Store.loadData()或类似的东西来重新填充网格。