private static IEnumerable <SelectListItem> GetListsDropDown(GridMvcFilter tbFilter, int max) { var itemSelected = tbFilter.GridPageSize ?? GridMvcFilter.DefaultPagesize; var list = new List <SelectListItem>(); const int defaultPageSize = GridMvcFilter.DefaultPagesize; if (max <= defaultPageSize) { list.Add(new SelectListItem { Value = SetLink(tbFilter, defaultPageSize.ToString(CultureInfo.CurrentCulture)), Text = defaultPageSize.ToString(CultureInfo.CurrentCulture), Selected = true }); } else { for (var i = defaultPageSize; i < max + defaultPageSize; i += defaultPageSize) { list.Add(new SelectListItem { Value = SetLink(tbFilter, i.ToString(CultureInfo.CurrentCulture)), Text = i.ToString(CultureInfo.CurrentCulture), Selected = itemSelected == i }); } } return(list); }
private static string SetLink(GridMvcFilter tblParams, string value) { var filter = tblParams.GridFilter != null?tblParams.GridFilter.Split(',') : new string[] { }; var gridfilter = ""; if (filter.Length <= 0) { return(String.Format("/{0}{1}?grid-page={2}&grid-page-size={3}{4}{5}", tblParams.Controller, (!string.IsNullOrEmpty(tblParams.Action) ? "/" + tblParams.Action : "") + (!string.IsNullOrEmpty(tblParams.Id) ? ("/" + tblParams.Id) : ""), tblParams.GridPage, value, tblParams.GridOrd != null ? ("&grid-ord=" + tblParams.GridOrd) : "", gridfilter)); } gridfilter = filter.Where(item => item.Length > 0).Aggregate(gridfilter, (current, item) => current + ("&grid-filter=" + item)); return(String.Format("/{0}{1}?grid-page={2}&grid-page-size={3}{4}{5}", tblParams.Controller, (!string.IsNullOrEmpty(tblParams.Action) ? "/" + tblParams.Action : "") + (!string.IsNullOrEmpty(tblParams.Id) ? ("/" + tblParams.Id) : ""), tblParams.GridPage, value, tblParams.GridOrd != null ? ("&grid-ord=" + tblParams.GridOrd) : "", gridfilter)); }
public override void OnActionExecuted(ActionExecutedContext filterContext) { var controller = (Controller)filterContext.Controller; var rd = filterContext.RouteData; var request = filterContext.HttpContext.Request; var model = controller.ViewData.Model as IQueryable <Object>; var count = model != null?model.Count() : 0; int pagesize, page; if (!int.TryParse(request.Params.Get("grid-page-size"), out pagesize)) { pagesize = GridMvcFilter.DefaultPagesize; } if (!int.TryParse(request.Params.Get("grid-page"), out page)) { page = 1; } var tbFilter = new GridMvcFilter { Id = rd.Values["id"] as string, Action = rd.GetRequiredString("action"), Controller = rd.GetRequiredString("controller"), GridPage = page, GridPageSize = pagesize, GridFilter = request.Params.Get("grid-filter"), GridOrd = request.Params.Get("grid-ord"), }; controller.ViewBag.ItemsPerPage = pagesize; controller.ViewBag.ListDropDown = GetListsDropDown(tbFilter, count); }