2013-12-20 3 views
2

Я применил Webgrid в своем собственном модуле, и пейджинг работает нормально, но у меня есть проблема при сортировке. Сортировка работает только в одном столбце, который задан как defaultSort. Другая сортировка столбцов не работает.Сортировка WebGrid не работает с Orchard

<div id="gridList"> 
       @{ 
    var grid = new WebGrid<Models.ServicePart>(null, rowsPerPage: Model.PageSize, canPage: true, defaultSort: "Name", ajaxUpdateContainerId: "myGrid"); 
        grid.Bind(Model.ServiceList, rowCount: Model.TotalCount, autoSortAndPage: false); 
        grid.Pager(mode: WebGridPagerModes.All); 
       } 
       <div id="myGrid"> 
        @MvcHtmlString.Create(grid.GetHtml(tableStyle:"items", columns: grid.Columns(
        grid.Column("Name",header: "Name",style:"width30percent"), 
        grid.Column(columnName:"Contact",header: "Contact", style:"width30percent"), 
        grid.Column("ServiceTypeRecord.TypeName",header: "Service Type",style:"width25percent"), 
        grid.Column("", header: "Action", format :(item) => Html.Raw(
         (Authorizer.Authorize(Permissions.EditContent, item) ? (Html.ItemEditLink(T("Edit").Text, item)).ToString() : "") + " | " + (Authorizer.Authorize(Permissions.EditContent, item) ? (Html.Link(T("Delete").Text, Url.ItemRemoveUrl(item, new { returnUrl }), new { itemprop = "RemoveUrl UnsafeUrl" })).ToString() : "") 
        ),style:"width15percent") 
        )).ToString()) 
       </div> 
      </div> 

сортировка работает только на окнеИМЯстолбец, потому что по умолчанию sorting.If установить колонки контакта как по умолчанию, так только контакты столбец сортировки работает.

ответ

0

Обязательные имена столбцов при привязке моей модели к webgrid, поэтому добавьте имя столбца в grid.Bind Функция сортировки будет работать.

var grid = new WebGrid<Models.ServicePart>(null, rowsPerPage: Model.PageSize, canPage: true, defaultSort: "Name", ajaxUpdateContainerId: "myGrid"); 
       grid.Bind(Model.ServiceList,new[]{"Name","Contact","ServiceTypeRecord.TypeName"}, rowCount: Model.TotalCount, autoSortAndPage: false); 
       grid.Pager(mode: WebGridPagerModes.All); 
Смежные вопросы