Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Сортировка в GridView


Автор: fear 15.7.2007, 13:03
Есть GridView, который отображает данные о заказчиках, имеюся колонки имя, фамилия и т.д. Как выполнить сортировку по имени-фамилии? Т.е. отсортировать в первую очередь по имени во вторую по фамилии (Например, "Сергей Николов" должен следовать за "Сергей Арестанов").

Автор: tol05 15.7.2007, 13:51
читай 
GridView.SortExpression 
GridView.SortDirection

Автор: fear 15.7.2007, 16:06
А где почитать можно? Не подскажешь? ... С MSDN мы друг друга как-то не понимаем smile

Автор: Idsa 15.7.2007, 17:34
Цитата(fear @  15.7.2007,  16:06 Найти цитируемый пост)
 С MSDN мы друг друга как-то не понимаем 

Ты хочешь об этом поговорить? smile

Автор: fear 15.7.2007, 17:47
Цитата(Idsa @ 15.7.2007,  17:34)
Ты хочешь об этом поговорить? smile

Боюсь длинным получится разговор smile Сейчас больше буду рад, примерчику по теме.

Автор: mr.DUDA 15.7.2007, 18:29
Проще наверно SQL-запрос построить так, чтобы возвращало упорядоченные данные, чем грид настраивать. ИМХО.

Автор: fear 15.7.2007, 19:06
Нашёл решение, нужно переопределить событие sorting следующим образом.
Код

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    string oldExpression = GridView1.SortExpression;
    string newExpression = e.SortExpression;
    if (oldExpression.IndexOf(newExpression) < 0)
    {
        if (oldExpression.Length > 0)
             e.SortExpression = oldExpression + ", " + 
newExpression;
         else
             e.SortExpression = newExpression;
     }
     else
     {
         e.SortExpression = oldExpression;
     }
}

Автор: mr.DUDA 15.7.2007, 22:17
Добавил в FAQ.

Автор: fear 16.7.2007, 16:16
Кто-нибуть пытался изменять сам способ сортировки? Чтобы поиск проводился не по алфавиту, а по другим критериям?

Автор: Mymik 16.7.2007, 19:34
если мне не изменяет память, то сортировка происходит по критериям типа соответствующие типу данных хранящихся в колонке. Т.е. если ты хранишь там int (когда создаешь DataTable с данные для DataColumn.DataType = typeof(int)) то сортировка будет происходить по числовому принципу.

Автор: fear 16.7.2007, 21:18
С этим всё ясно. А вот как быть если тип строковый, а сортировать нужно не по алфовиту а по смыслу - не понятно ... Какой-то механизм должен существовать, не реализовывать же сортировку с нуля.

Автор: Naum 19.7.2007, 09:55
Цитата(fear @  16.7.2007,  22:18 Найти цитируемый пост)
не реализовывать же сортировку с нуля.

Только так.
Цитата(fear @  16.7.2007,  22:18 Найти цитируемый пост)
не по алфовиту а по смыслу - не понятно

Ты хочешь, чтобы разработчики фреймворка знали, какой смысл каждый программист может вложить в строки в гридвью??? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)