1

何らかの理由で、MVContrib グリッドの並べ替えを機能させることができません。

次のコードの結果がグリッドになるのに、並べ替え可能な列がないのはなぜですか?

MVC3 と Razor 構文を使用しています。

@model List<InboundShipmentItem>

@using MvcContrib.UI.Grid
@Html.Grid(Model).Sort((GridSortOptions)ViewBag.SortOptions).Columns(column =>
    {
        column.For(item => !item.Verified ? Ajax.ActionLink("Receive", "ReceiveItem", new {id = @item.Id},
                                                            new AjaxOptions
                                                                {
                                                                    HttpMethod = "GET",
                                                                    InsertionMode = InsertionMode.Replace,
                                                                    UpdateTargetId = "grid",
                                                                    OnSuccess = "InboundShipmentVerification.ReceiveItemSucceeded",
                                                                    OnFailure = "InboundShipmentVerification.ReceiveItemFailed"
                                                                }).ToString() : "Received").Named("Received?").Encode(false);
        column.For(item => item.PONumber).Named("PO#").Sortable(true);
        column.For(item => item.ShipQty).Named("Qty Sent").Sortable(true).SortColumnName("Qty");
        column.For(item => item.ReceivedQty).Named("Qty Recd");
        column.For(item => item.ISBN).Named("ISBN");
        column.For(item => item.Title).Named("Title");
        column.For(item => item.Author).Named("Author");
        column.For(item => item.InboundShipment.Status).Named("Shipment Status");
        column.For(item => item.InboundShipment.ShipmentId).Named("Shipment #");
    })
4

2 に答える 2

4
@Html.Grid(Model).Columns(column =>
{
////
}).Sort((GridSortOptions)ViewData["sort"])

その ViewData をコントローラーに入力する必要があります。

そのように

public ActionResult Index(GridSortOptions sort, int? page)
{
   ///
   ///FILL YOUR MODEL 
   ///IEnumerable<YourModel> list = YourData.ToList() as IEnumerable<YourModel>;

    if (sort.Column == null)
    {
        sort.Column = "DefaultSortColumnName";
        sort.Direction = MvcContrib.Sorting.SortDirection.Ascending;
    }

    ViewData["sort"] = sort;

    return View(list);
}
于 2012-09-19T09:54:26.403 に答える
3

問題は、ViewBag.SortOptions が NULLだったことです。したがって、GridSortOptions オブジェクトが null の場合、グリッドはヘッダー列の並べ替えリンクをレンダリングしません。私にとって、これはばかげた行動です。

于 2012-08-23T15:28:04.820 に答える