2011-05-30 90 views
0

我喜歡Razor-ViewEngine中的Webgrid HTML-Helper。帶過濾結果的Webgrid

不幸的是我面臨一個問題。使用內置的排序和分頁功能,我放棄了我的過濾器設置。

在網格上方我有一個filtercontrol(表單),通過填充過濾器類並在提交時調用控制器上的actionmethode來過濾網格中顯示的行。

守則控制器:

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,導致未過濾的結果集。

有沒有辦法讓排序或分頁webgrid時我的結果過濾? 我不想用jquery !!!

在此先感謝 託比


是否有可能定義添加到排序或頁面鏈接點擊時調用的鏈接參數?

+0

下面的答案有問題嗎? – 2012-07-30 00:56:41

+0

有沒有人有這個答案? – adityawho 2013-09-12 10:28:57

回答

0

啊哈。問題是你需要在你的過濾器字段和網格網格中添加一個GET表單。然後,您需要做一些按摩webgrid數據的工作,以便將它的排序信息以可識別的方式發回。我失去了鏈接到我讀這個文章,但我這裏有一個例子:?ASP.NET MVC3 WebGrid - custom, server-side sorting

你與像本地主機/例子/管理/事情的URL最終thingName =凱悅&市= &狀態= TX &國家= & sort = city & sortdir = ASC