0

Razor-ViewEngine の Webgrid HTML ヘルパーが気に入っています。

残念ながら、私は問題に直面しています。組み込みの並べ替え機能とページング機能を使用すると、フィルター設定が失われます。

グリッドの上にフィルター コントロール (フォーム) があり、送信時にフィルター クラスを入力し、コントローラーでアクション メソッドを呼び出すことによって、グリッドに表示される行をフィルター処理します。

コントローラーのコード:

public ActionResult DeliveryContractList(SampleClassFilter filter){

   // Populate a filtered List of Items to Show    
   IList<SampleClass> model = FillList(filter);

   // Return a View with the List.
   return View("SampleClassList", model);

}

景色:

  @model IEnumerable<SampleClass>
  @{
      ViewBag.Title = "SampleClassList";
  }

  @using(Html.BeginForm()){
        // Form to Set the Filter
        ...
  }

  <div id = "SampleClassList">

    var grid = new WebGrid(Model, canPage: true, canSort: true, ajaxUpdateContainerId: "SampleClassList");

    @grid.GetHtml(htmlAttributes: new {id = "gridSampleClass"}, columns:
        grid.Columns(
            grid.Column("Foo", "For", canSort: true),
            grid.Column("Bar", "Bar", canSort: true),
        )
     ); 
</div>

たとえば、グリッドの列ヘッダーをクリックしてソートすると、コントローラーのアクションメソッドも呼び出されることがわかりました。もちろん、フィルター クラスは null であり、フィルター処理されていない結果セットにつながります。

Web グリッドの並べ替えまたはページング時に、結果をフィルタリングしたままにする方法はありますか? jqueryは使いたくない!!!

前もってありがとうトビ


並べ替えまたはページ リンクをクリックしたときに呼び出されるリンクに追加されるパラメーターを定義することはできますか?

4

1 に答える 1

0

あはは。問題は、フィルター フィールドと Web グリッドの両方に GET フォームを追加する必要があることです。次に、webgrid データを少し処理して、認識できる方法で並べ替え情報をポストする必要があります。これについて読んだ記事へのリンクを失いましたが、ここに例があります: ASP.NET MVC3 WebGrid - カスタム、サーバー側の並べ替え

localhost/example/admin/thing?thingName=Hyatt&City=&State=TX&Country=&sort=city&sortdir=ASC のような URL になります。

于 2012-06-22T19:57:41.997 に答える