Как мне подходить к списку чисел, когда диапазон может быть слишком большим? - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть элемент управления списком, который я заполняю из кода страницы.

Он работает со значениями от 1 до 100, но что если нужный мне диапазон станет действительно большим? (Например, от 1 до 200000000?)

В настоящее время я использую это:

<asp:ListBox ID="ListBox1" runat="server" EnableTheming="True" 
 Height="20px" Width="54px">

</asp:ListBox>

И в моем коде:

for (int i = 0; i < 100; i++)
{
    ListBox1.Items.Add(i.ToString());
}

Как правильно решить эту проблему?

Ответы [ 5 ]

6 голосов
/ 22 декабря 2009

Вы можете использовать инструмент NumericUpDown из набора инструментов AJAX. Позволяет вводить цифры, а также прокручивать их вверх и вниз без использования полосы прокрутки.

3 голосов
/ 22 декабря 2009

Рассматривали ли вы, как будет выглядеть этот список, если у него 200 миллионов вариантов выбора?

Что если кто-то захочет выбрать 140 235?

Возможно, вы могли бы подумать о другом способе выбора пользователем номера?

Могут ли они ввести его в текстовое поле?

2 голосов
/ 22 декабря 2009

Ненавижу это говорить, но не знаю. Подумайте о своих пользователях - если им нужно прокрутить (в соответствии с вашим гипотетическим примером) 200 000 000 элементов, они не смогут использовать список. Кроме того, вы перегружаете браузер такими данными.

Найдите другой способ сделать это. Вы можете разрешить ввод текста в произвольной форме (и отображать ошибку, если пользователь ввел нечисловые данные - там поможет RangeValidator), вы можете использовать (как заявил TenaciousImpy) инструмент NumericUpDown AJAX. Есть и другие варианты.

Вообще говоря, списки и выпадающие списки обычно не должны содержать более ста или около того элементов.

Или, как сказал Рэймонд Чен в прошлом, если вам приходится спрашивать об ограничениях, вы, вероятно, делаете что-то не так.

1 голос
/ 22 декабря 2009

Если вы пытаетесь поместить столько записей в раскрывающийся список, вы делаете что-то не так.

Обычно, с большим количеством записей, один показывает его подмножество (например, только 100 из сотен тысяч), а затем просматривает следующие 100 и т. Д.

0 голосов
/ 22 декабря 2009

Если вы хотите ограничить пользовательский ввод положительными целыми числами от 1..n, как насчет использования элемента управления TextBox вместе с RangeValidator для проверки диапазона?

Если вы хотите разрешить множественный выбор значений, предоставьте пользователю несколько текстовых ящиков (может генерироваться динамически) или попробуйте просто разрешить пользователю вводить список чисел через запятую и анализировать его в своем коде. Я считаю, что большинство пользователей предпочитают ввод данных с клавиатуры, а не ввод данных «щелчком мыши» - это намного быстрее.

...