C# grid.mvc在控制器中使用过滤结果
我正在使用grid.mvc()进行过滤和排序。有人知道如何在动作控制器中处理过滤结果吗。我试图通过FormCollection传递一个隐藏字段,但由于分页的原因,只传递可见值。或者在mvc中是否有任何好的替代网格,您可以在mvc和MVCController中对操作进行过滤、排序和使用过滤结果 \u customersGrid.cshtmlC# grid.mvc在控制器中使用过滤结果,c#,asp.net-mvc,asp.net-mvc-4,datagrid,C#,Asp.net Mvc,Asp.net Mvc 4,Datagrid,我正在使用grid.mvc()进行过滤和排序。有人知道如何在动作控制器中处理过滤结果吗。我试图通过FormCollection传递一个隐藏字段,但由于分页的原因,只传递可见值。或者在mvc中是否有任何好的替代网格,您可以在mvc和MVCController中对操作进行过滤、排序和使用过滤结果 \u customersGrid.cshtml @using GridMvc.Html @using GridMvc.Site.Models @using GridMvc.Sorting @mode
@using GridMvc.Html
@using GridMvc.Site.Models
@using GridMvc.Sorting
@model GridMvc.Site.Models.Grids.CustomersGrid
@{
ViewBag.Title = "_CustomersGrid";
}
<h2>_PersonsGrid</h2>
@Html.Grid(Model).Named("customersGrid").Columns(columns =>
{
columns.Add(o => o.CustomerID)
.Encoded(false)
.Sanitized(false)
.SetWidth(30)
.RenderValueAs(o => Html.Hidden("CustomerID", o.CustomerID));
columns.Add(o => o.CompanyName)
.Titled("Name")
.SetWidth(110);
columns.Add(o => o.Phone)
.Titled("Phone")
.SetWidth(250);
}).WithPaging(15).Sortable().Filterable().WithMultipleFilters()
@{
ViewBag.Title = "Home";
}
@using (Html.BeginForm(null, null, FormMethod.Post, new { @class = "form-horizontal" }))
{
<fieldset>
<legend></legend>
@Html.Action("Grid") @* grid in a partial view *@
<p>
@Html.ActionLink("Back", "Index",null,new { @class = "btn", @accesskey="b" })
<button type="submit" class="btn btn-primary" accesskey="s" ><u>S</u>ave</button>
</p>
</fieldset>
}
我终于找到了只向控制器发送过滤结果的方法。 解决方案是将选择保存到“Shared/_Grid.cshtml”页面上的会话,如下所示:
@helper RenderGridBody()
{
if (!Model.ItemsToDisplay.Any())
{
<tr class="grid-empty-text">
<td colspan="@Model.Columns.Count()">
@Model.EmptyGridText
</td>
</tr>
}
else
{
Session["Items"]=Model.ItemsToDisplay;
foreach (object item in Model.ItemsToDisplay)
{
<tr class="grid-row @Model.GetRowCssClasses(item)">
@foreach (IGridColumn column in Model.Columns)
{
@column.CellRenderer.Render(column, column.GetCell(item))
}
</tr>
}
}
}
@helper RenderGridBody()
{
如果(!Model.ItemsToDisplay.Any())
{
@Model.EmptyGridText
}
其他的
{
会话[“项”]=Model.ItemsToDisplay;
foreach(Model.ItemsToDisplay中的对象项)
{
@foreach(Model.Columns中的IGridColumn列)
{
@column.CellRenderer.Render(column,column.GetCell(项))
}
}
}
}
当Grid.MVC中填充了数据时,所选内容将保存到会话中,以便稍后在控制器中执行操作时使用
在控制器中,您只需调用变量并将其转换为正确的类型:
public ActionResult MyController()
{
var SelectedRows = (List<ModelType>)Session["Items"];
List<ModelType> listStats = SelectedRows;
// the rest of the controller code
}
public ActionResult MyController()
{
var SelectedRows=(列表)会话[“项”];
List listStats=SelectedRows;
//控制器代码的其余部分
}
我希望这会有所帮助:)您能用网格显示视图中的一些代码吗?您是否有一个同时包含可见项和不可见项的视图模型?它只保存当前页面数据,而不是所有记录:(
public ActionResult MyController()
{
var SelectedRows = (List<ModelType>)Session["Items"];
List<ModelType> listStats = SelectedRows;
// the rest of the controller code
}