0

このサンプルでは、​​グリッドの並べ替えは最初の列でうまく機能します。他のすべての列は昇順でのみソートでき、「sortdir」が「DESC」に切り替わることはありません。(Ajax キャッシュも無効になっています)

誰かが解決策を知っているか、同じ問題を抱えていましたか? 何が間違っているのですか?

コントローラ:

[OutputCache(Location = OutputCacheLocation.None)]
public ActionResult Index_Result_Org(string sort, string sortdir)
{
   this.setRep();
   this.rep.LoadOV();
   return View("Index_OV", rep.GetOV(sort != null ? sort : "Kennung", sortdir != null ? sortdir == "ASC" : true));
}

意見:

@model List<Models.OV_View>
@{
    Layout = null;
    var grid_BA = Html.Grid<OV_View>(Model, ajaxUpdateContainerId: "BAS_OV", canPage: false, defaultSort: "Kennung");        
}
<div id="BAS_OV">
    @grid_BA.GetHtml(
    htmlAttributes: new { @id = "webgrid_BA" },
    alternatingRowStyle: "alt",
    tableStyle: "BAS",
    columns: grid_BA.Columns(
                         grid_BA.Column("Kennung", header: "Verbandskennung", format: @<text>@Html.Label(@item.Data.Kennung)</text>, canSort: true),
                         grid_BA.Column("Name", header: "Verbandsname", format: @<text>@item.Data.Name</text>, canSort: true),
                         grid_BA.Column("Anzahl", header: "Anzahl", format: @<text>@item.Data.Anzahl</text>, canSort: true, style: "counter_column"),
                         grid_BA.Column("Select", header: "X", canSort: false, format: @<text><input id="Select" name="Select" type="checkbox" onclick="Select(this)" value="@item.Select" @(item.Select == true ? "Checked" : null) /></text>, style: "checkbox_column"),
                         grid_BA.Column("ID", "", format: @<text>@item.Data.ID</text>, canSort: false, style: "invisible_column")
                            )
                      )
</div>
4

1 に答える 1

1

とった。

降順でソートできるのは、defaulSort: 列のみです。

そこで、コントローラーに次の行を追加しました。

this.ViewBag.Sort = sort;

ビュー内の次の行を andded して変更しました。

var grid_BA = Html.Grid<ErgoBAS_OV_View>(Model, ajaxUpdateContainerId: "BAS_OV", canPage: false, defaultSort: "Kennung");    

に:

string temp = this.ViewBag.Sort != null ? this.ViewBag.Sort : "Kennung";
var grid_BA = Html.Grid<ErgoBAS_OV_View>(Model, ajaxUpdateContainerId: "BAS_OV", canPage: false, defaultSort: temp); 

これは汚い解決策です。defaultSort を View Model に追加する必要があると考えてください。

于 2011-09-14T07:18:29.790 に答える