HtmlHelper Grid 扩展分页为submit 保存查询条件值
- 扩展Grid让他生成的分页用submit提交
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcContrib.UI.Html.Grid;
using System.Collections;
using System.IO;
using System.Web.Mvc;
namespace HZMCRM.Extension
{
public class GridEx<T> : Grid<T> where T : class
{
public GridEx(IEnumerable<T> items, GridColumnBuilder<T> columns, IDictionary htmlAttributes, TextWriter writer, HttpContextBase context)
: base(items, columns, htmlAttributes, writer, context)
{
}
public GridEx(string viewDataKey, ViewContext viewContext, GridColumnBuilder<T> columns, IDictionary htmlAttributes, TextWriter writer)
: this(MvcContrib.UI.Html.Grid.Grid<T>.GetDataSourceFromViewData(viewDataKey, viewContext), columns, htmlAttributes, writer, viewContext.HttpContext)
{
}
protected override string CreatePageLink(int pageNumber, string text)
{
string str = this.CreateQueryString(this.Context.Request.QueryString);
string filePath = this.Context.Request.FilePath;
//return string.Format("<a href=\"{0}?{1}={2}{3}\">{4}</a>", new object[] { filePath, pageQueryName(), pageNumber, str, text });
return string.Format("<a href=\"javascript:window.form1.action='{0}?{1}={2}{3}';window.form1.submit();\">{4}</a>", new object[] { filePath, pageQueryName(), pageNumber, str, text });
}
private string pageQueryName()
{
string _pageQueryName = "page";
if (this.HtmlAttributes.Contains("page"))
{
_pageQueryName = this.HtmlAttributes["page"] as string;
this.HtmlAttributes.Remove("page");
}
return _pageQueryName;
}
}
} - 扩展HtmlHelper让其的Html.Grid方法之一能实例化我们新扩展的类GridEx
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcContrib.UI.Html.Grid;
using System.Collections;
namespace HZMCRM.Extension
{
public static class GridExEx
{
public static void Grid<T>(this HtmlHelper helper, string viewDataKey, Action<IRootGridColumnBuilder<T>> columns, MyExtention postPageLink) where T : class
{
new GridEx<T>(viewDataKey, helper.ViewContext, CreateColumnBuilder<T>(columns,null), null, helper.ViewContext.HttpContext.Response.Output).Render();
}
private static GridColumnBuilder<T> CreateColumnBuilder<T>(Action<IRootGridColumnBuilder<T>> columns, Action<IGridSections<T>> sections) where T : class
{
GridColumnBuilder<T> builder = new GridColumnBuilder<T>();
if (columns != null)
{
columns(builder);
}
if (sections != null)
{
sections(builder);
}
return builder;
}
public enum MyExtention
{
PageLink
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcContrib.UI.Html.Grid;
using System.Collections;
namespace HZMCRM.Extension
{
public static class GridExEx
{
public static void Grid<T>(this HtmlHelper helper, string viewDataKey, Action<IRootGridColumnBuilder<T>> columns, MyExtention postPageLink) where T : class
{
new GridEx<T>(viewDataKey, helper.ViewContext, CreateColumnBuilder<T>(columns,null), null, helper.ViewContext.HttpContext.Response.Output).Render();
}
private static GridColumnBuilder<T> CreateColumnBuilder<T>(Action<IRootGridColumnBuilder<T>> columns, Action<IGridSections<T>> sections) where T : class
{
GridColumnBuilder<T> builder = new GridColumnBuilder<T>();
if (columns != null)
{
columns(builder);
}
if (sections != null)
{
sections(builder);
}
return builder;
}
public enum MyExtention
{
PageLink
}
}
}