Как лучше всего разрешить пользователю выполнять поиск по большому списку на веб-странице? - PullRequest
2 голосов
/ 06 апреля 2009

Я пишу приложение ASP.NET MVC, и у меня есть форма, в которой пользователь может ввести один или несколько номеров деталей, которые они использовали для решения проблемы. Большую часть времени они знают номер детали и могут просто ввести его. Однако иногда им требуется дополнительная помощь.

Таблица номеров деталей содержит более 50 000 элементов, что слишком много для раскрывающегося списка. Кроме того, выбор занимает некоторое время, так что я не знаю, что автозаполнение здесь тоже так здорово.

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

Ответы [ 5 ]

2 голосов
/ 06 апреля 2009

Некоторые идеи:

  • Укажите диапазоны для ваших номеров деталей в раскрывающемся списке.
  • Используйте категории, отличные от детали номер, чтобы помочь сузить поиск.
  • Использовать автозаполнение с фильтром.
2 голосов
/ 06 апреля 2009

Я бы использовал поле автозаполнения + добавленный серверный кеш для номеров деталей (поэтому вам не нужно будет брать их из базы данных каждый раз, только когда записи были обновлены). Таким образом, он должен работать довольно быстро.

Кэширование в ASP.NET с классом SqlCacheDependency

С помощью этого кода JQuery вы можете фильтровать буквы, которые пользователь вводит в поле «Автозаполнение»:

$(function() {
    $.isShiftDown = false;
    $('input#partName').keydown(function(e) {
        if (e.keyCode == 16) $.isShiftDown = true;
        if ($(this).val().length == 0 && (e.keyCode == 188 ||
            e.keyCode == 189)) return false;
        return ($.inArray(e.keyCode, [8, 13, 35, 36, 37, 39, 46, 48, 49, 50,
            51, 52, 53, 54, 55, 56, 57, 188, 189]) > -1 && !$.isShiftDown)
            || (e.keyCode > 64 && e.keyCode < 91);
    }).keyup(function(e) { if (e.keyCode == 16) $.isShiftDown = false; });
});

(замените эти числа на ваши, которые соответствуют разрешенным символам. Например, e.keyCode == 16 - это клавиша SHIFT, 64 - 91 код - это буквы от A до Z)

1 голос
/ 06 апреля 2009

Что вам действительно нужно, так это всплывающее окно, которое позволяет пользователю ввести критерии для детали и выполнить запрос к базе данных. Категория, или имя детали, частичный номер детали и т. Д. Одно поле со списком, вероятно, недостаточно «обогащено», чтобы позволить пользователю выразить «то, что он знает» о детали, чтобы он мог сузить номер детали по сравнению с формой с несколько полей.

Как правило, вставьте модальное средство выбора с указанными пользователем критериями фильтра. Поместите маленькое увеличительное стекло или что-нибудь рядом с полем, чтобы открыть его. Поначалу форма должна быть пустой, без результатов, а затем пользователь сможет ее сузить.

1 голос
/ 06 апреля 2009

То, что сказали другие, кроме того, что при работе с большими списками вам не нужно запускать автозаполнение, пока фильтр не будет длиной не менее 2 или 3 символов.

1 голос
/ 06 апреля 2009

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

...