Webgrid带有过滤结果

时间:2011-05-30 06:45:18

标签: asp.net-mvc-3 razor html-helper webgrid

我喜欢Razor-ViewEngine中的Webgrid HTML-Helper。

不幸的是,我遇到了一个问题。使用内置的排序和分页功能,我松开了我的过滤器设置。

在网格上方,我有一个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 !!!

提前致谢 托比


是否可以定义添加到单击排序或页面链接时调用的链接的参数?

1 个答案:

答案 0 :(得分:0)

啊哈哈。问题是您需要在过滤器字段和Web网格周围添加GET表单。然后,您需要对webgrid数据进行一些按摩,以便以可识别的方式发回其排序信息。我丢失了我读到的有关此内容的文章的链接,但我在此处有一个示例:ASP.NET MVC3 WebGrid - custom, server-side sorting

你最终得到像localhost / example / admin / thing这样的网址?thingName = Hyatt&amp; City =&amp; State = TX&amp; Country =&amp; sort = city&amp; sortdir = ASC