Я использую Html.Grid из набора объектов, которые извлекаются из базы данных (через LINQ to SQL). Вот код сетки (я изменил данные на что-то придуманное). Страница строго напечатана для людей.
<%=Html.Grid<People>(Model)
// Display chose solution information.
.Columns(column =>
{
column.For(person => person.Name);
column.For(person => person.Address.City);
}
)
%>
В базе данных у меня будет таблица People и таблица Address, связанные внешним ключом. (Опять же, это придумано - просто пытаюсь описать проблему.)
Я хочу разрешить пользователю сортировать столбцы в общем. Предыдущий разработчик жестко запрограммировал сортировку в контроллере, например ...
//
// GET: Results/Grid
public ActionResult Grid(int id, GridSortOptions sort)
{
if (sort == null)
{
sort = new GridSortOptions();
}
Solution solution = repository.GetSolution(id);
List<People> people = solution.People.ToList();
if (!string.IsNullOrEmpty(sort.Column))
{
people = solution.People.ToList().OrderBy(sort.Column, sort.Direction).ToList();
}
return PartialView("Grid", people);
}
Это прекрасно работает, когда объект, который я сортирую, это люди (если я щелкаю столбец person.Name, чтобы отсортировать его по возрастанию или по убыванию). Однако, когда я хочу отсортировать столбец адреса, я получаю исключение, потому что Люди не содержат город ... Адрес есть.
Мой вопрос ... есть ли способ сделать этот тип в общем, не зная, какой тип опережает время? Спасибо.