Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: TonyОтветов: 6

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

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

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

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

combobox

Ответы

Ответ 1 · рейтинг 1 · Mark Byers

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

Ответ 2 · рейтинг 1 · Shiraz Bhaiji

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

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

Ответ 3 · tsilb

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

Ответ 4 · DOK

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

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

Ответ 5 · Emrah

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

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

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

Ответ 6 · John Trenwith

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы