将“无”项添加到DirectStore

时间:2014-11-24 02:50:11

标签: extjs extjs-mvc

我有一个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返回数据后,是否有一个我可以挂钩的事件,我可以添加我的“没有表格”。元件?

或者有更好的方法吗?

1 个答案:

答案 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)]);
}

});