Сортировка с помощью WebGrid - PullRequest
1 голос
/ 25 января 2012

Я создаю WebGrid и пытаюсь включить сортировку. На самом деле сортировка работает, но я заметил, что вы можете сортировать только по столбцам, где columnName не пустое в вызове grid.columns Так что в моем примере у меня есть это:

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column(columnName: "", header: "Item title", format: @<text> @GetItemTitle(@item.InventoryReference) </text>),
        grid.Column(columnName: "OwnerReference", header: "Owner reference")
     )
);

В этом примере заголовок элемента не сортируется, но указывается владелец. Вопрос в том, как я могу получить название предмета для сортировки и почему это происходит?

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Для столбцов, в которых вы использовали пользовательский формат, вам придется выполнить сортировку самостоятельно.Таким образом, вам нужно будет присвоить вашему пользовательскому столбцу имя, которое будет использоваться для его идентификации на сервере:

grid.Column(
    columnName: "title", 
    header: "Item title", 
    format: @<text> @GetItemTitle(@item.InventoryReference) </text>
),

, и при щелчке по заголовку этого столбца запрос будет отправлен в действие контроллера, которое будетвыглядит следующим образом:

/controller/action/?sort=title&sortdir=ASC

Таким образом, внутри действия вашего контроллера вы будете использовать эту информацию для сортировки набора данных.

public ActionResult Foo(string sort, string sortdir)
{
    // check if sort = title and then sort your dataset accordingly
    // before returning the model to the view
    ...
}

Сортировка причин работает для столбцов, для которых вы неПользовательский формат определен потому, что помощник WebGrid способен автоматически сортировать набор данных перед его отображением, но это, очевидно, плохо, потому что такие вещи, как сортировка и разбиение на страницы, обязательно должны выполняться на ваших внутренних уровнях (например, в базе данных, если вы используете один) для эффективной сортировки и подкачки.Так что даже для столбцов без пользовательского формата вы должны выполнять сортировку / разбиение по страницам на уровне базы данных, а не полагаться на помощника WebGrid для сортировки / разбивки на страницы набора данных перед отображением.

0 голосов
/ 15 января 2014

В моем случае мне удалось выполнить сортировку по умолчанию только путем предоставления columnName отформатированному столбцу.

Я согласен с тем фактом, что сортировка и разбиение на страницы должны выполняться на стороне сервера, но удобно иметьвсе сделано, предоставив только несколько параметров для WebGrid.

С уважением,

...