ObjectDataSource + GridView + Sorting

voledy
Дата: 09.04.2010 01:40:03
Например, есть классы с некоторыми свойствами

Student
------
Key
Name
LastName
Age
GroupKey

Group
------
Key
Name

поля таблиц базы данных дублируют свойства описанных классов

У класса Student есть статический метод GetAllUsers(string sortExpressrion) возращающий коллекцию StudentsCollection
Все это завязано на ObjectDataSource, данные отображаются в GridView c возможностью сортировки.
Вместо GroupKey нужно отображать название группы.

Вопрос: Как бы вы реализовали возможность сортировки по имени группы?

примечание: Пример взят из головы. В классе Student намеренно, не описал свойства типа Group,
так как в реальности классов побольше, и ссылок между ними тоже больше. Иначе по цепочке пришлось бы извлекать сотню полей, создавать кучу объектов, только для того чтобы просто извлечь студентов..)))

решение типа select * from Student s inner join Group g on s.Key = g.Key
меня не устраивает, так как при появлении новых связных таблиц запрос будет становится кошмаром.

возможно организация классов неудачная... вообщем поделитесь опытом)))

надеюсь я более менее понятно расписал. если, что спрашивайте)))
P.S. буду рад конструктивным ответам...)))


---------
:o)=|=<
Gennadiy83
Дата: 09.04.2010 09:43:10
Попробуй использовать DataView для сортировки DataTable. Приведу выдержки из своего кода:

Dim priceDataTable As DataTable = New DataTable

PriceDDList.DataSource = priceDataTable
PriceDDList.DataTextField = "Title"
PriceDDList.DataValueField = "IDCodePrice"

priceDataTable.Load(sqlComm.ExecuteReader())

priceDataTable.DefaultView.Sort = "IDCodePrice" - УКАЗЫВАЕМ ПОЛЕ ДЛЯ СОРТИРОВКИ
Dim view As DataView = New DataView(priceDataTable)
priceDataTable = view.ToTable - отсортированный VIEW в DataTable

PriceDDList.DataBind() - биндим отсортированный DataTable

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