Удаленная фильтрация с помощью ListFilter в заголовке столбца сетки ExtJS

Я использую плагин ListFilter для фильтрации результатов на панели сетки. Определение столбца

{
    header: 'Provider',
    filter: {
        type: 'list',
        store: Ext.getStore('MyApp.store.Provider'),
        dataIndex: 'provider_id',
        labelField: 'name'
    }
}

MyApp.store.Provider создается как

   Ext.create('Ext.data.Store', {
        storeId: 'MyApp.store.Provider',
        autoDestroy: true,
        autoLoad: {start: 0, limit: 50},
        autoSync: true,
        model: 'MyApp.model.Provider',
        pageSize: 50,
        proxy: {
            type: 'ajax',
            api: {
                create:  'proxy/provider/create',
                read:    'proxy/provider/read',
                update:  'proxy/provider/update',
                destroy: 'proxy/provider/destroy'
            },
            reader: {
                type: 'json',
                root: 'data',
                successProperty: 'success',
                messageProperty: 'message',
                totalProperty: 'total'
            },
            writer: {
                allowSingle: false,
                type: 'json',
                writeAllFields: false,
                root: 'data'
            }
        }
    });

И, наконец, модельMyApp.model.Provider определяется как

Ext.define('MyApp.model.Provider', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'provider_id', type: 'int'},
        'name',
        { name: 'create_time', type: 'date', dateFormat: appDateFormat },
        { name: 'status', type: 'int'}
    ],
    idProperty: 'provider_id',
    displayProperty: 'name' // A custom property used for dynamically use the property to display
})

Теперь этот код не показывает никакого подменю в меню фильтра. Это просто показывает загрузку. Смотрите изображение.

Обновить

Я решил это с помощью следующего фильтра конфигурации. Это на самом деле населяетoptions Конфиг вручную. Так нетstore используется здесь.

{
  type: 'list',
  labelField: 'name',
  options: (function () {
    var opts = [];
    fS.load(function (records, operation, success) {
      for (var i = 0; i < records.length; i++) {
        var ar = {
          id: records[i].get('provider_id'),
          name: records[i].get('name')
        };

        opts.push(ar);
      }
    });
    return opts;
  })(),
  single: true
}

Кажется, «id» жестко запрограммирован.id: records[i].get('provider_id'), выглядит не очень хорошо. Хотя это работает.

Но я все еще ищу правильный способ сделать это.

Примечание: Ожидаемое поведение можно найти наExtJS 4.1.1, Посмотри этоjsfiddle, Я воспроизвел это. Но эта самая вещь не работает наExtJS 4.0.7

Ответы на вопрос(1)

Ваш ответ на вопрос