Вывести очень много строк через GridView ASP

252
21 августа 2017, 07:04

Есть простое ASP приложение на котором нужно вывести очень большую таблицу. На форме расположен грид вью:

     <asp:GridView ID="VTable" runat="server" Width="774px" style="margin-left: 0px"/>

Достаточно тривиально ему указан источник данных :

   private  void UploadTable(string command)
    {
        DataTable TABLE = DBWorker.ReturnTable(command));
        VTable.DataSource = TABLE;
        VTable.DataBind();
    }

Однако на моменте привязки DataBind() выскакивает исключение System.OutOfMemoryException. Прочитал что исключение вызвано тем что в гридвью нельзя записать более 400 000 строк. Однако в таблице их более миллиона, что с этим делать ?

Answer 1

Я думаю не один уважающий себя и пользователей программист не выведет более миллиона строк на одной странице. Это не удобно и потребляет приличное кол-во ресурсов (особенно для сервера).

Для таких целей разбивают на страницы, на одной странице скажем 50 строк, а в самом низу, под таблицей выводится Страница 1.2.3... 90.

Сделайте это:

  • Разбейте ваши данные по частям, скажем запросом берете по 50 элементов, начиная с n-го.
  • Высчитайте сколько у вас будет всего страниц.
  • Сделайте простейший get запрос, где будет указана нужная страницы (site.ru/data?page=10)
  • Выведите все страницы в одну строку под таблицу (как я показывал выше).

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

READ ALSO
Ошибка при десериализации json

Ошибка при десериализации json

Пытаюсь десериализовать json в класс, но выдает ошибку "Не удается преобразовать объект типа "SystemBoolean" в тип "Sell_Offers"" Хочу получить доступ к offers

299
Вставка текста в массив текстбоксов - c#

Вставка текста в массив текстбоксов - c#

Ситуация такаяЕсть массив текстбоксов tb[] (на форме их много, допустим начиная с textBox1 по textBox36)

372
mvc core передать в представление модель

mvc core передать в представление модель

Есть форма в представлении передает данные в контроллер где записываются в БДНужно вернуть в представление Id вставленного обьекта

261
Перемещение Panel если она мешает курсору

Перемещение Panel если она мешает курсору

Я думаю можно обойтись без кода, тут главное смысл1

237