我有一个ComboBox供用户选择链接到DirectStore的表。 DirectStore包含一个directFn,它指向一个C#函数,它获取所有表。这看起来像这样:
Ext.define('MyApp.store.DataSourceTable', {
extend: 'Ext.data.DirectStore',
constructor: function (cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
storeId: 'DataSourceTable',
buffered: true,
purgePageCount: false,
directFn: NameSpace.API.DataSourceTables,
fields: [ 'Name', 'Id' ],
root: 'items',
totalProperty: 'total'
}, cfg)]);
}
});
这很好用,但我希望用户可以选择“没有表格”。如果没有更改服务器上的函数以返回none作为元素,我该如何实现?
在directFn返回数据后,是否有一个我可以挂钩的事件,我可以添加我的“没有表格”。元件?
或者有更好的方法吗?
答案 0 :(得分:1)
当我想添加这样的自定义记录(http://docs-origin.sencha.com/extjs/5.0.1/#!/api/Ext.data.DirectStore-event-load)时,我会使用'load'事件,因此您的代码将如下所示:
Ext.define('MyApp.store.DataSourceTable', {
extend: 'Ext.data.DirectStore',
constructor: function (cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
storeId: 'DataSourceTable',
buffered: true,
purgePageCount: false,
directFn: NameSpace.API.DataSourceTables,
fields: [ 'Name', 'Id' ],
root: 'items',
totalProperty: 'total',
listeners: {
'load': function(store) {
store.insert(0, {
'Id': -1,
'Name': 'None'
});
}
}
}, cfg)]);
}
});