I'am using grid.mvc(http://gridmvc.codeplex.com/) for filtering and sorting. Does anybody know how to process the filtered result in an action controller. I'm trying to pass a hidden field via FormCollection, but cause of paging only the visible Values are passed. Or is there any good alternative grid in mvc where you can filter and sort and use the filtered result for an action in and MVCController?
_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()
Index.cshtml
@{
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>
}
HomeController Actions
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index( FormCollection form)
{
var filterSettings = Session["grid-filters"] as IGridFilterSettings;
var url = new UriBuilder(Url.Action(null, null, null, Request.Url.Scheme));
if (filterSettings != null)
url.Query = GetGridFilterQueryString(filterSettings); //restore grid filter settings
/* How to get the filtered values from grid insteat from formcollection*/
var chckedValues = form.GetValues("CustomerId");
foreach (var id in chckedValues)
{
//Do something
Debug.WriteLine(id);
};
ViewBag.ActiveMenuTitle = "Demo";
return Redirect(url.ToString());
}
public ActionResult Grid()
{
var repository = new CustomersRepository();
var grid = new CustomersGrid(repository.GetAll());
Session["grid-filters"] = grid.Settings.FilterSettings;//store grid filters in the session
return PartialView("_CustomersGrid", grid);
}