asp.net mvc 3-过滤结果的Webgrid



我喜欢Razor ViewEngine中的Webgrid HTML Helper。

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

在网格上方,我有一个filtercontrol(表单),通过填充一个filter类并在提交时调用控制器上的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,导致未筛选的结果集。

在对网络网格进行排序或分页时,有没有一种方法可以过滤我的结果?我不想使用jquery!!!

提前感谢Tobi


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

啊哈。问题是,您需要在过滤器字段和web网格周围添加一个GET表单。然后,你需要对网络网格数据进行一点点处理,以便它以识别的方式发布排序信息。我丢失了我读到的关于这一点的文章的链接,但我在这里有一个例子:ASP.NET MVC3 WebGrid-自定义的服务器端排序

你最终会得到像localhost/example/admin/thing这样的url?thingName=凯悦酒店;城市=&状态=TX&国家=&sort=城市&sortdir=ASC

相关内容

  • 没有找到相关文章

最新更新