Я использую 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 и таблица адресов, связанная внешним ключом. (Опять же, это надуманно - просто пытаюсь описать проблему.)
Я хочу разрешить пользователю сортировать столбцы в общих чертах. Ранее девелопер жестко сортировкой в контроллере, как так ...
//
// 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 для сортировки по возрастанию или по убыванию). Однако, когда я хочу сортировать столбец адресов, я получаю исключение, потому что люди не содержат город ... Адрес делает.
Мой вопрос ... есть ли способ сделать это в целом, не зная, какой тип опережает время? Благодарю.
Некоторые из вашего кода не очень понятны `ViewData [" sort "] = sort;` это то, что должно быть обращено? Есть ли только один уровень объектов Child или более одного? – msarchet 2010-12-02 15:24:34
@msarchet - Я наследую этот код от предыдущего разработчика. Я не считаю, что заявление необходимо. Обновление, чтобы отразить это. Благодарю. – JasCav 2010-12-02 15:43:30