Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# grid.mvc在控制器中使用过滤结果_C#_Asp.net Mvc_Asp.net Mvc 4_Datagrid - Fatal编程技术网

C# grid.mvc在控制器中使用过滤结果

C# 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

我正在使用grid.mvc()进行过滤和排序。有人知道如何在动作控制器中处理过滤结果吗。我试图通过FormCollection传递一个隐藏字段,但由于分页的原因,只传递可见值。或者在mvc中是否有任何好的替代网格,您可以在mvc和MVCController中对操作进行过滤、排序和使用过滤结果

\u customersGrid.cshtml

    @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
}