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
Надеюсь поможет.