ASP.NET Ajax Toolkit: каково максимальное количество элементов в ComboBox?

Я создаю небольшую форму, используя ComboBoxes с большим количеством элементов, и кажется, что ровно после добавления 510 элементов ComboBox перестает работать, а кнопка со списком скрыта.

Есть ли максимальное количество элементов, которые можно добавить? Или это может быть другая проблема?

заранее спасибо


person Tony    schedule 29.11.2009    source источник
comment
У вас есть более общая проблема здесь. Поле со списком с 500 элементами совершенно бесполезно.   -  person SLaks    schedule 30.11.2009
comment
Почему? Я помню, что ComboBox также является текстовым полем с автоматическим поиском. Проверьте официальный пример: asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox /ComboBox.aspx. Я не понимаю, почему комбо из 500 предметов совершенно бесполезно.   -  person Tony    schedule 30.11.2009
comment
Том прав. Реализация, показанная в ссылке, имеет полосу прокрутки и автоматически выполняет поиск по мере ввода. Это может быть очень удобно, если кто-то рассматривает возможность использования текстового поля и списка... это поле со списком объединяет все в одном для вас.   -  person Brian T Hannan    schedule 30.11.2009
comment
Однако 510 элементов — это много для одного списка. Вы должны подумать о том, чтобы разрушить структуру, найдя какую-то закономерность. Позвольте пользователю сузить результаты, используя меньшие списки... по одному. Это увеличит скорость и гарантирует, что вы не перегружаете одно поле со списком или список.   -  person Brian T Hannan    schedule 30.11.2009
comment
Можешь объяснить, что ты имеешь в виду под словом перестает работать?   -  person azamsharp    schedule 30.11.2009
comment
Конечно, происходит то, что кнопка со стрелкой, которая отображает элементы, просто исчезает, а автопоиск ничего не отображает, даже если я печатаю. Я проверил html-код, и кнопка имеет стиль отображения: скрытый. Возможно, это какая-то проблема с CSS, однако ComboBox отлично работает с менее чем 500 элементами.   -  person Tony    schedule 02.12.2009


Ответы (6)


Я только что попробовал AJAX ComboBox с 10000 элементов, и он работал нормально, хотя загрузка заняла много времени (около 10 секунд). Таким образом, нет предела в 510 элементов. Ваша проблема должна быть в чем-то другом.

person Mark Byers    schedule 29.11.2009
comment
Хм, спасибо за тест, я думаю, проблема во мне, вероятно, в CSS. Я просто не могу понять, где, но я сделаю еще несколько тестов. - person Tony; 30.11.2009

Во-первых, с таким количеством элементов в поле со списком вам следует изменить дизайн экрана. Как только вы преодолеете определенное количество элементов, пользователю будет быстрее писать что-то в текстовое поле.

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

person Shiraz Bhaiji    schedule 29.11.2009
comment
Но поле со списком также является текстовым полем с предложениями и всем остальным ... Я видел его на многих сайтах, например, для выбора стран. Я думаю, вы неправильно понимаете функциональность поля со списком. Проверьте это asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox/ComboBox. aspx. Возвращаясь к вопросу, я получаю предметы из базы данных с SP. Если быть более точным, то это все города из моего региона. - person Tony; 30.11.2009
comment
@ Том, как вы передаете данные из SP в браузер, я думаю, у вас должна быть служба JSON, как она реализована? - person Shiraz Bhaiji; 30.11.2009
comment
Я прикрепляю элементы к ComboBox в кодовой привязке, примерно так: cbCities.DataSource = GetCitiesFromDB(); (этот метод вызывает SP и возвращает DataTable). - person Tony; 30.11.2009

Я бы рекомендовал вам использовать комбинацию элементов управления, чтобы фильтровать элементы в более мелкие группы. Например, если у вас 500 автомобилей, вы можете отфильтровать их по производителю (в поле со списком) и по производителю (в другом поле со списком).

person tsilb    schedule 29.11.2009
comment
Я уже фильтрую по регионам, однако есть регионы с большим количеством городов, максимум 600, я думаю. - person Tony; 30.11.2009
comment
Может быть, отфильтровать по штату (с чем люди могут быть более знакомы, чем с некоторыми представлениями о регионе)? - person tsilb; 30.11.2009
comment
Зависит от страны, где вы живете. Государство тут не при чем :) - person Tony; 03.12.2009

Можно ли разбить список на категории и использовать более одного ComboBox? Если вы добавили раскрывающийся список для выбора категории (географический регион, группа товаров или какой-либо другой фильтр), то пользователь мог выбрать категорию. Это будет применяться для фильтрации списка, отображаемого в исходном втором поле со списком. Это сделало бы пользовательский интерфейс намного лучше, и вы бы передавали в браузер намного меньше данных.

Я думаю о Cascading DropDown, продемонстрированном здесь.

person DOK    schedule 29.11.2009
comment
Я уже делаю это с выпадающими списками =) Однако с определенным набором значений я получил почти 600 элементов в последнем комбо. - person Tony; 30.11.2009
comment
Это именно то, о чем я говорю. Кроме того, только потому, что вы уже делаете это одним способом, не означает, что вам не следует думать о том, чтобы сделать это другим способом. Сделайте это правильно сейчас и избавьте себя от боли позже :) - person Brian T Hannan; 30.11.2009
comment
Хе-хе, хорошо сказано... Однако я получаю эту логистическую информацию от своей национальной почтовой службы, и я не вижу, как я могу разделить больше информации, которая уже разделена (было около 24000 буксиров). Может быть, делать карту или что-то в этом роде, но то, за что я заплатил, оно того не стоит :P - person Tony; 02.12.2009

Ваша проблема может быть связана с Internet Explorer. У нас была аналогичная проблема пару месяцев назад, когда у нас не было никаких проблем с ней в Firefox или Chrome, но когда мы должны были показать поле со списком в IE, экран зависал, и он снова начинал отвечать через пару минут.

Нужно ли вам такое большое поле со списком, это еще одна проблема, которая не имеет отношения к вашему вопросу, поэтому я постараюсь ответить :)

Пожалуйста, ознакомьтесь с этой статьей http://kemcik.blogspot.com/2009/11/very-slow-updatepanel-refresh-when.html

person Emrah    schedule 16.03.2010

Подсказка к ответу beno здесь, который сработал для меня:

Это ограничение, скорее всего, связано с настройкой maxJsonLength по умолчанию в файле web.config. Вы можете указать размер следующим образом в web.config:

<system.web.extensions>
   <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="1234567"></jsonSerialization>
      </webServices>
    </scripting>
</system.web.extensions>

Имейте в виду, что размер — это количество символов, а не количество записей. Значение по умолчанию — 102400.

person John Trenwith    schedule 25.11.2020