Добавление элемента "Нет" в DirectStore

90
5

У меня есть ComboBox для пользователя, чтобы выбрать таблицу, связанную с DirectStore. DirectStore содержит directFn, который указывает на функцию С#, которая получает все таблицы. Все это выглядит примерно так:

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

Это прекрасно работает, но я хочу, чтобы у пользователя была возможность выбрать "нет таблицы". Не удалось изменить функцию на сервере, чтобы вернуть ее как элемент, как мне это достичь?

Есть ли событие, на которое я могу подключиться, к которому вызывается после того, как directFn возвращает данные, где я могу добавить элемент "нет таблицы"?

Или есть лучший способ?

спросил(а) 2014-11-24T05:50:00+03:00 5 лет, 11 месяцев назад
1
Решение
58

Я использую событие "load", когда хочу добавить собственные записи, подобные этому (http://docs-origin.sencha.com/extjs/5.0.1/#!/api/Ext.data.DirectStore-event-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)]);
}

});

ответил(а) 2014-11-24T18:28:00+03:00 5 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема