Загрузка extJS Combo удаленно не работает - PullRequest
0 голосов
/ 17 мая 2009

Это мой первый bash при использовании extJS, и после нескольких часов борьбы некоторые вещи работают хорошо, за исключением того, что у меня есть комбинированные списки, которые я не могу отфильтровать до менее 2000 элементов в крайних случаях, поэтому Я пытаюсь просмотреть списки удаленно, но я, должно быть, что-то делаю не так.

Мое хранилище данных и комбо выглядят следующим образом:

var remoteStore = new Ext.data.JsonStore({
        //autoLoad    : true,
        url         : 'addition-lists.aspx',
        fields      : [{name: 'extension_id'}, {name: 'extension'}],
        root        : 'extensionList',
        id          : 'remoteStore'               
    });
.
.
                        xtype         : 'combo',
                        fieldLabel    : 'Remote',
                        name          : 'remote',
                        displayField  : 'extension',
                        valueField    : 'extension_id',
                        mode          : 'remote', 
                        //pageSize      : 20,
                        triggerAction : 'query',  
                        typeAhead     : true,                    
                        store         : remoteStore,
                        anchor        : '95%'

Комбо загружается локально, но как только я переключаюсь на удаленное, оно остается пустым.

Моя страница ASP.NET, возвращающая JSON, выглядит следующим образом:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Clear();
    Response.Write(GetRemote());
}

Ответы [ 5 ]

2 голосов
/ 17 мая 2009

В удаленных хранилищах комбо по умолчанию имеет свойство minChars равное 4, поэтому запрос отправляется только после ввода 4 символов. Настройка minChars почти дает желаемое поведение.

Я говорю почти потому, что даже если элемент, который запрашивается автозаполнением, находится на текущей странице, новый запрос к серверу все равно отправляется, по умолчанию выбран первый элемент на новой странице.

1 голос
/ 04 июня 2009

Как вы настроили свое хранилище выше, результат из вашего ASP-скрипта должен выглядеть примерно так:

{"extensionList": [
  {"extension_id": 1, "extension": "js"},
  {"extension_id": 2, "extension": "aspx"}
]}

Если это не так, ваш удаленный магазин ничего не найдет.

0 голосов
/ 18 мая 2009

Несколько вещей. Во-первых, при этом:

remoteStore.loadData (<% = GetRemote ()%>);

вы на самом деле не делаете удаленный вызов из вашего javascript. Вы отображаете результат вызова серверной функции GetRemote прямо на страницу в время рендеринга . Наверное, не то, что вы намерены? Если GetRemote записывает ваши комбо-данные (и работает правильно), вы должны иметь возможность использовать комбо-настройку для локальных данных. Если на самом деле вы хотите сделать удаленный вызов, вам нужно удалить метку сервера и загрузить данные через URL прокси, как показано в нескольких примерах, поставляемых с Ext.

Другое дело, что ваш код Page_Load на самом деле ничего не показывает о том, как вы загружаете, форматируете или возвращаете свои данные. Я бы посоветовал просмотреть источник и убедиться, что ваш тег на самом деле заменяется ожидаемыми вами данными. Если / когда вы переключаете его на настоящий удаленный вызов для загрузки данных, вы можете использовать Firebug для проверки ваших вызовов XHR и проверки данных, поступающих таким образом.

0 голосов
/ 17 мая 2009

Вы должны установить прокси, т.е. установить

proxy: new ScriptTagProxy

свойство для загрузки 'store' удаленно. Посмотрите на примеры для точного синтаксиса.

РЕДАКТИРОВАТЬ: игнорируйте мою предыдущую заметку, поскольку вы используете ярлык JsonStore.

Попробуйте применить все эти свойства к вашему комбо:

   typeAhead: true,
   typeAheadDelay: 500,
   triggerAction: 'all',
   selectOnFocus:true,

И, пожалуйста, не делайте предварительную выборку записей на стороне сервера (используя loadData). Это сильно вредит внутреннему фильтру, так что вы придерживаетесь отфильтрованных записей из разных предварительных выборок. С другой стороны, если вы делаете предварительную выборку всех записей на стороне сервера, зачем вам тогда удаленный доступ для вашей комбинации?!

0 голосов
/ 17 мая 2009

Вы можете обратиться к этому вопросу Проблема со списком ExtJS в IE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...