Как отсортировать список в общем - PullRequest
0 голосов
/ 02 декабря 2010

Я использую 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, чтобы отсортировать его по возрастанию или по убыванию). Однако, когда я хочу отсортировать столбец адреса, я получаю исключение, потому что Люди не содержат город ... Адрес есть.

Мой вопрос ... есть ли способ сделать этот тип в общем, не зная, какой тип опережает время? Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Я недавно отправил похожий вопрос.Ответы, которые я получил на этот пост, могли бы помочь вам встать на пути:

В поисках лучшего способа сортировки моего списка

В основном ответы предлагают удерживатьотображение Func <> (или аналогичного) и вызов соответствующего в блоке кода.

0 голосов
/ 02 декабря 2010

Как насчет сортировщика таблиц javascript? Конечно, это не сработает, если ваш список достаточно велик, чтобы требовать подкачки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...