Abrar Kazi Ответов: 1

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


Я загружаю excel с данными более чем в 2 строки lacs. Разделяя на куски по 500 строк каждый раз, чтобы создать xml и попасть в базу данных, после обработки с помощью хранимой процедуры я возвращаю обновленные 500 строк и храню в datatable и добавляю каждые 500 возвращенных строк до 2 строк lacs обрабатываются.

Его работа отлично работает, я получаю datatable из 2 лаков обработанных строк. Теперь, когда я возвращаю этот Datatable в представление для отображения, он выбрасывает исключение из памяти.

Пожалуйста помочь.

Controller :

  return View(validateDS.Tables[0]);


Смотреть:

@model System.Data.DataTable
@using System.Data;

<h2>Upload File</h2>

@using (Html.BeginForm("Index", "Upload", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()

    <div class="form-group">
        <input type="file" id="dataFile" name="upload" />
    </div>

    <div class="form-group">
       
        <input type="submit" name="Command" value="Upload Cegedim" class="btn btn-default" />
     
    </div>

    if (Model != null)
    {
        <table>
            <thead>
                <tr>
                    @foreach (DataColumn col in Model.Columns)
                    {
                        <th>@col.ColumnName</th>
                    }
                </tr>
            </thead>
            <tbody>
                @foreach (DataRow row in Model.Rows)
                {
                    <tr>
                        @foreach (DataColumn col in Model.Columns)
                        {
                            <td>@row[col.ColumnName]</td>
                        }
                    </tr>
                }
            </tbody>
        </table>
    }
}


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

Я попробовал приведенный выше код. Он отлично работал для 50 тысяч записей. теперь он не работает для 2 записей lac.

Я знаю, что .Net предоставляет только 2 ГБ данных, но для таких ситуаций должен быть обходной путь, пожалуйста, помогите.


1) я также хочу знать, как я могу применить пейджинг в этой ситуации с приведенным выше кодом.

Mehdi Gholam

Не показывайте так много данных.

NaibedyaKar

Я не уверен, какие данные вы показываете, но 2 записи lacs на странице-это очень плохая идея. Вам лучше поискать подкачку на стороне сервера, чтобы показать данные.

F-ES Sitecore

Пожалуйста, обратите внимание, что это англоязычный сайт, мы не знаем, что такое "Лакс", он ничего для нас не значит, поэтому мы не знаем цифр, о которых вы говорите.

Как бы то ни было, человек все равно может обрабатывать только такой объем информации, поэтому показывать много данных всегда бесполезно. Обновите свой сайт, чтобы использовать подкачку\фильтрацию\поиск вместо того, чтобы просто показывать огромный список данных.

Abrar Kazi

хорошо спасибо всем я подаю заявку на пейджинг

1 Ответов

Рейтинг:
9

OriginalGriff

Простое решение: не делайте этого.
Как уже упоминалось, это плохая идея. Почему? Три соображения:
1) это займет огромное количество пропускной способности и будет очень, очень медленно отображаться из-за огромного количества данных, которые вы отправляете в качестве страницы.
2) никто не собирается использовать его: большинство людей даже не вернутся на сайт во второй раз. Отчасти потому, что он так медленно загружается, но в основном потому, что они не могут найти то, что ищут. Вы хотите прокрутить 200 000 строк в поисках интересующей их строки? Даже если бы они это сделали, как вы думаете, сколько времени это займет?
3) это приведет к краху большинства браузеров с ошибкой нехватки памяти, как вы уже видели - исключительно потому, что HTML, который он генерирует, чертовски огромен.

Страницы. Фильтровать его. Пусть пользователь ищет его. Но не сваливайте все на него и не ждите, что он сам разберется. Это ленивый путь-легкий для вас, бесполезный для пользователей. А это значит, что он не привыкает.


Abrar Kazi

Спасибо

OriginalGriff

Пожалуйста!

Abrar Kazi

Пожалуйста, займитесь этим.

http://www.codeproject.com/Questions/1125954/Model-becomes-empty-on-pagedlist-nd-page-click