Asp.net gridview сортировка без перепривязки данных

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

protected override void OnPreRender(EventArgs e)
{
    if (!IsPostBack)
    {
    SqlCommand cmd2 = new SqlCommand("SR_Student_Course_List", new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RDCV2ConnectionString"].ConnectionString));
    try
    {
        cmd2.CommandType = CommandType.StoredProcedure;
        cmd2.CommandTimeout = 120;
        cmd2.Parameters.Add("student_id", SqlDbType.Char, 11).Value = student;
        cmd2.Connection.Open();
        grdCourses.DataSource = cmd2.ExecuteReader();
        grdCourses.DataSourceID = string.Empty;
        grdCourses.DataBind();
    } finally
    {
        cmd2.Connection.Close();
        cmd2.Connection.Dispose();
        cmd2.Dispose();
    }}}

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
4 645
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете попробовать сохранить данные в состоянии просмотра (или в кеше).

Ответ принят как подходящий

Если вы не просматриваете результаты, а просто читаете, то что-то вроде плагина jquery tablesorter будет быстрым и легким решением. Я использовал это на таблицах до 1400 строк и отлично работает, хотя ~> несколько сотен, вероятно, лучше на медленных путях.

Если gridview можно редактировать, то проверка события / ввода aspnet может показаться пустышкой, если вы не пройдете надлежащую регистрацию клиентских скриптов и т. д.

Используемый сортировщик таблиц jquery работает фантастически, мой вывод набора данных составляет всего 20 строк максимум, но это долгое время, чтобы вычислить его, поскольку это агрегированные данные.

PeteT 18.11.2008 21:36

В вашем случае я бы использовал SqlDataAdapter и заполнил DataTable. Затем поместите DataTable в переменную сеанса. Когда GridView выполняет сортировку, проверьте, существует ли еще переменная сеанса. Если это не так, то снова заполните DataTable. Наконец, отсортируйте DataTable с помощью DataView и повторно свяжите GridView с DataView.

Другие вопросы по теме