Member 13289364 Ответов: 1

Сортировка в ASP.NET не работает


Я пытаюсь отсортировать свой вид сетки. Я проверил и другие сообщения, но мой код почему-то не запускается. Может кто-нибудь, пожалуйста, сказать мне, что я здесь делаю не так? Любая помощь будет очень признательна. Спасибо.

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

охраняемых недействительными grdCustomers_Sorting(объект отправителя, GridViewSortEventArgs е)

{


}


&ЛТ;в ASP:GridView в идентификатор="gridviewCustomers" атрибут runat="сервер" AllowPaging="ложных" AllowSorting="истинный" CellPadding="4" OnSorting="grdCustomers_Sorting" DataKeyNames="Кодклиента" OnSelectedIndexChanged="grdCustomers_SelectedIndexChanged"&ГТ;

1 Ответов

Рейтинг:
0

an0ther1

Я не вижу, где вы на самом деле применяете этот вид.
Если ваш обработчик событий grdCustomers_Sorting не стреляет, то проверьте, что GridView имеет свойство

AllowSorting=True


Если ваш обработчик событий срабатывает, то это, скорее всего, потому, что вы не применили сортировку из e.SortExpression. Ознакомьтесь с документацией по адресу;
Управления GridView.Событие Сортировки (Системы.Веб.Пользовательского интерфейса.WebControls)[^]

с уважением


Member 13289364

На самом деле у меня есть AllowSorting=True, если вы посмотрите на код в самом низу.Я действительно ссылался на документацию, которую вы упомянули, но она дает мне следующую ошибку.
Не могли бы вы помочь мне решить эту проблему? Спасибо.

Системы.Веб.Пользовательского интерфейса.WebControls.Sqldatasource его' не содержит определение для 'DefaultView', а не метод расширения 'DefaultView', принимающий первый аргумент типа 'System.Веб.Пользовательского интерфейса.WebControls.Sqldatasource его' может быть найден (пропущена директива using или ссылка на сборку?

an0ther1

Извини, пропустил тот первый раз, когда я его просмотрел.
Где вы заселяете dscCustomers? В коде позади? Если это источник данных SQL, то вы не сможете его отсортировать, если не измените текст команды, чтобы включить сортировку и перезагрузить данные.
EDIT: я прочитал еще кое-что об элементе управления DataSource & вы можете отсортировать его, но вы должны установить свойство DataSourceMode в DataSet. Затем набор данных будет содержать один (или несколько) Таблицы данных из вашего запроса. См. https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.datasourcemode.aspx

DefaultView - это свойство DataTable, refer; https://msdn.microsoft.com/en-us/library/340c39ak(d=hv. 2, v=vs. 110). aspx

Если у вас есть небольшая таблица, вы обычно запрашиваете БД при загрузке страницы, а затем добавляете DataTable в объект сеанса, как показано в Примере.
Когда обработчик событий срабатывает, вы извлекаете DataTable из объекта сеанса и применяете сортировку в соответствии с примером.
Если это была большая таблица, и вы не хотели добавлять ее в объект сеанса, вы бы перезагрузили ее из SQL и повторно привязали к GridView

Надеюсь, это поможет

Member 13289364

Я перепробовал все, но у меня ничего не вышло. Моя сортировка работает для всех других страниц, кроме этой. Данные поступают из источника данных SQL, и я включил их выше. Я только что обновил свои коды. Не могли бы вы помочь мне понять, чего мне здесь не хватает? Я читал документы и другие сообщения, но ничего не работает для меня. Спасибо.

an0ther1

Отладьте свой код и посмотрите, что такое DataSourceMode вашего элемента управления DataSource. Если это DataReader-по умолчанию - то вам нужно изменить его на DataSet, где вы определяете свой SqlDataSource - должно быть так же легко обновить ваш код, как показано ниже;
&ЛТ;как ASP:sqldatasource его идентификатор="dscCustomers" атрибут runat="сервер" DataSourceMode="набора данных"
ConnectionString= " <%$ ConnectionStrings:ACCDBConnection % & gt;"
ProviderName= " <%$ ConnectionStrings:ACCDBConnection.Имя_поставщика %&ГТ;"