Проблема со списком ExtJS в IE - PullRequest
1 голос
/ 25 марта 2009

У меня есть выпадающий список ExtJS с удаленным хранилищем данных. Во всех браузерах он работает нормально, кроме IE (все версии, которые я тестировал), когда выпадающий список расширяется на доли секунды, показывая значок «загрузки», а затем снова исчезает. Повторное нажатие после этого больше не расширяет его. В основном: это не заселено.

На стороне сервера все нормально. Действие Controller достигается (с использованием ASP.NET MVC), которое возвращает данные Json. Json сформирован правильно (все остальные браузеры проглатывают его как минимум).

Странная вещь в том, что когда я ставлю точку останова в действии контроллера, JsonStore должным образом заполняется на стороне клиента. Это для меня указывает на какую-то временную проблему.

Еще одна странная вещь в том, что время от времени она работает нормально. Возможно, потому что время выбрано случайно или что-то в этом роде.

Если я установил режим комбинированного списка 'local' и принудительно установил .load() в удаленном хранилище данных, он отлично работает и в IE.

Эта проблема присутствует во всех выпадающих списках, которые используют удаленное хранилище данных для нас.

У меня есть следующий JsonStore:

  var companies = new Ext.data.JsonStore({
    url: '/Company/GetCompanies/',
    root: 'companies',
    fields: [
    { name: 'CompanyID'},
    { name: 'CompanyName'}]
  });

Поле со списком:

new Ext.form.ComboBox({
    fieldLabel: 'Company',
    typeAhead: false,
    triggerAction: 'all',
    valueField: 'CompanyID',
    hiddenName: 'CompanyID',
    displayField: 'CompanyName',
    mode: 'remote',
    lazyRender: true,
    store: companies,
    allowBlank: true,
    editable: false,
    listeners: {
        'focus': function(){
          if(companies.data.length > 0)
          {
           debugger; // This is only ever fired after the aforementioned breakpoint method.
          }
        }
    }
})

Json, который возвращается контроллером:

{"companies":[{"CompanyID":1,"CompanyName":"Test"},{"CompanyID":2,"CompanyName":"Test1"
},{"CompanyID":3,"CompanyName":"Test2"}]}

1 Ответ

4 голосов
/ 25 марта 2009

Цифры, я разрабатываю решение всего через несколько минут после публикации вопроса об этом.

Я переключился на Store вместо JsonStore и указал свойство method: 'GET' прокси, и оно заработало. Я понятия не имею, почему это работает, и почему только у IE была проблема с этим. Действие моего контроллера принимает как GET, так и POST, чтобы это было не так.

Магазин:

var companies = new Ext.data.Store({
      proxy: new Ext.data.HttpProxy({ url: '/Company/GetCompanies/', method: 'GET' }),
      reader: new Ext.data.JsonReader({ root: 'companies' }, [{ name: 'CompanyID', mapping: 'CompanyID' }, { name: 'CompanyName', mapping: 'CompanyName'}])
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...