我有一个MVC站点/视图,显示顶部的一系列复选框,对应于我的webgrid记录中可用的年份。我想点击复选框来过滤webgrid中的数据。我有这个工作,但当我点击webgrid中的标题对其进行排序时,我的复选框重置为未选中状态。
我习惯于webform编程,所以一直依赖于viewstate来维护选择。
我如何在MVC世界中这样做?
以下是我在代码中显示复选框的代码:
@using (Ajax.BeginForm(new AjaxOptions { InsertionMode=InsertionMode.Replace,UpdateTargetId="myGrid"}))
{
foreach (var y in Model.Years)
{
<input type="checkbox" name="cbYears" value="@y.Value" />
<label for="cbYears">@y.Value</label>
}
<br />
<input type="submit" value="Filter Results" />
}
网格以局部视图显示。
TIA
答案 0 :(得分:1)
很高兴,如果这些可以帮助!
MVC3 WebGrid Page/Sort Issue with a CheckBox elsewhere on the page
http://websitesorcery.com/post/2012/03/19/CheckBox-Issue-with-MVC-3-WebGrid-Paging-Sorting.aspx
答案 1 :(得分:1)
我如何在MVC世界中这样做?
在网格中执行排序时,您必须在请求中发送过滤选项。这个想法是每当你进行排序时,你必须以查询字符串或形式提交当前过滤选项,当前分页以及与请求中的网格相关的其他内容,这样就不需要维护状态了因为请求中提供了所需的所有信息。
对于前。如果你看到jqgrid它提供了许多选项,如排序,过滤,分页,分组等。首先说我已经过滤了特定列/值的网格然后如果我进行排序然后网格附加当前过滤的列/值和排序将一切列作为请求中的查询字符串,因此在服务器端,我不需要保留任何状态,因为所有状态都在查询字符串中可用。
您也遵循类似的方法。