kkakadiya Ответов: 2

Выпадающий список Mvc связывает огромное количество данных


Привет,

Я использую MVC dropdownlistfor для привязки моего списка. У меня есть более чем 1,00,000+ данных, и это замораживает страницу.

Как справиться с таким огромным объемом данных? Итак, Пейдж не заводит руку и не реагирует.

если есть лучший способ, то, пожалуйста, направьте.

Спасибо.

Что я уже пробовал:

Я пробовал с помощью jquery scroll event и AJAX call загружать данные, но он не принимает, и я где-то читал, что scroll event не будет работать.

F-ES Sitecore

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

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Вы просто не помещаете так много данных в элемент управления, никогда.

Использование выпадающего списка для отображения ста тысяч записей-действительно плохая идея. Это не контроль для работы. Единственный способ показать, что много данных-это подкачка, показывая только количество записей, которые поместятся на дисплее. Это то, для чего выпадающий список не подходит.

Если вы собираетесь поместить данные в элемент управления, вы должны найти какой-то способ фильтрации данных до чего-то управляемого. Нет никакого способа на земле, чтобы пользователь собирался прокручивать более 10 000 записей в элементе управления.


kkakadiya

тогда, пожалуйста, предложите альтернативу.

Dave Kreskowiak

Я уже это сделал. Для этого необходимо полностью изменить пользовательский интерфейс для отображаемых данных. Никто на форуме не может сделать это за вас, потому что мы не знаем вашего приложения, ситуации, в которой вы отображаете/редактируете данные, данных, доступных для использования, каковы его требования, каковы бизнес-правила для этой операции ... НИЧЕГО. Только у вас есть это, и только вы можете создать свой интерфейс вокруг этого материала.

kkakadiya

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

Dave Kreskowiak

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

При написании кода никогда не бывает такой вещи, как "есть только один способ сделать это".

Рейтинг:
1

Eldon E Elledge

Как указано в решении выше, подкачка / фильтрация-это ваш лучший вариант.
Для фильтрации, позволяющие параметров, которые можно передать и фильтра на основе данных о том, что. Загляните в LINQ Where / FIND для этого. Одата может быть еще одним хорошим выбором.

Вы также можете разрешить параметры для подкачки. Использование LINQ для возврата "страниц" данных. Исходя из объема данных, которые вы просматриваете, вы можете использовать оба этих варианта. Убедитесь, что какой бы выбор вы ни сделали, вы делаете его как можно ближе к данным. Вы всегда хотите сосредоточиться на возврате только тех данных, которые вам нужны.

Пример подкачки LINQ:

int pageSize = 5;

var accountsByPage = (from a in svcContext.AccountSet
                      select new Account
                      {
                       Name = a.Name,
                      });
System.Console.WriteLine("Skip 10 accounts, then Take 5 accounts");
System.Console.WriteLine("======================================");
foreach (var a in accountsByPage.Skip(2 * pageSize).Take(pageSize))
{
 System.Console.WriteLine(a.Name);
}


Этот пример взят из MSDN: Страница больших результирующих наборов с LINQ[^]