Как мне сохранить данные в моем сеточном представлении после обратной передачи? - PullRequest
1 голос
/ 01 апреля 2009

Я пишу внутреннее веб-приложение, которое используется для поиска кредитных проверок. Я использую ASP.NET для этого сайта.

У меня есть SQL-запрос, который я должен запросить в базе данных проверки кредитоспособности, и он возвращает данные о результатах. После того, как человек нажимает кнопку поиска, я запускаю запрос и каждый раз, когда пользователь нажимает кнопку поиска, привязываю возвращенную таблицу данных к Gridview.

Это прекрасно работает, и оно заполняет мой gridview, как и должно.

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

В настоящее время я храню данные в сеансе [], но не думаю, что мне следует это делать, потому что размер этой таблицы очень большой (иногда сотни тысяч результатов!)

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

Какое здесь общее решение?

Ответы [ 2 ]

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

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

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

Я обнаружил, что большинство проблем, с которыми я сталкивался в прошлом из-за того, что в сетке отображалось слишком много данных, были скорее проблемами проектирования, и я бы отступил и посмотрел на общую проблему, которую пытался решить, и реализовать другое решение, чтобы не отображать столько данных. Обычно клиент / пользователь запрашивает все, потому что он не рассматривает альтернативы или влияние своего запроса.

0 голосов
/ 01 апреля 2009

Несколько вещей:

  • Нажатие на «Page 2» не должно привести к обратной передаче - это должен быть простой запрос GET.
  • Не разрешать GridView сохранять свои данные в ViewState: кэшировать данные вручную и «перепривязывать» источник данных при каждом запросе
  • Использовать ASP.NET MVC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...