Сортировка с помощью MVCContrib - PullRequest
1 голос
/ 14 октября 2009

Кто-нибудь знает, как сортировать сетку MVCContrib при использовании сложного объекта.

Моя сетка отображает список Person, и я пытаюсь отсортировать по свойству Country. Проблема в том, что Country - это свойство класса Address, которое является свойством Person.

Person.Address.Country

    <%Html.Grid(Model).Columns(column =>
   {
       column.For(x => x.Id);
       column.For(x => x.FirstName);
       column.For(x => x.LastName).Sortable(false);
       column.For(x => x.Address.Country).Sortable(false);
       column.For(x => x.Age).Sortable(true);
   }).Render(); %>

Исключение:
Свойство 'Страна' не определено для типа '{Пространство имен} .Person'
var sourceProp = Expression.Property (sourceParam, this.SortBy); \ MVCContrib \ UI \ Grid \ Sortable \ ComparableSortList.cs Строка: 41

Любые предложения будут полезны.

Спасибо,

MG1

Ответы [ 3 ]

1 голос
/ 14 октября 2009

Обходной путь должен был бы выставить Country как свойство на Person и использовать это:

public string Country { get { return Address.Country; } }
0 голосов
/ 20 августа 2010

Для этого вам нужно использовать SortColumnName.

column.For(x => x.Address.Country).SortColumnName("Address.Country");

Я проверил это, и оно работает как шарм:)

Если вы не можете получить доступ к SortColumnName (), вы можете получить последнюю версию MVC contrib из http://mvccontrib.codeplex.com/SourceControl/changeset/changes/7db1cecc938f

0 голосов
/ 10 февраля 2010

@ orip дал вам ответ.

Но если вы хотите использовать функцию сортировки, вам нужно использовать:

<%Html.Grid(Model).Columns(column =>
{
   column.For(x => x.Id);
   column.For(x => x.FirstName);
   column.For(x => x.LastName).Sortable(false);
   column.For(x => x.Address.Country).Sortable(false);
   column.For(x => x.Age).Sortable(true);
}).RenderUsing(new SortableHtmlTableGridRenderer<Person>())
 .Render(); %>

Источник: http://www.jeremyskinner.co.uk/2009/02/23/rewriting-the-mvccontrib-grid-part-3-gridmodels-and-gridrenderers/

...