页面基类PageBase
定义所有页面的基类,包含一些基础方法
代码
/// <summary>
/// 页面的基类
/// </summary>
public class PageBase:System.Web.UI.Page
{
protected string LogoutFilePath = SysConfigs.WebsiteUrl +"Logout.aspx?Action=2";
private MemberShipUser m_User;
private bool m_IsAuthenticated;
private bool m_AlreadyValidate = false;
protected IDataAccess m_DAL = DALFactory.GetDataAccess();
/// <summary>
/// 分页控件
/// </summary>
private AspNetPager m_pager;
/// <summary>
/// 设置“DataBoundControl”控件的引用
/// </summary>
private DataBoundControl m_dataBoundControl;
/// <summary>
/// 设置“Repeater”控件的引用
/// </summary>
private Repeater m_repeater;
/// <summary>
/// 验证用户是否为登录用户
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
if(ValidateLoginStatus())
{
base.OnLoad(e);
}
}
/// <summary>
/// 验证用的登录状态
/// </summary>
internal bool ValidateLoginStatus()
{
if (m_AlreadyValidate)
return m_IsAuthenticated;
m_IsAuthenticated = false;
if (User.Identity.IsAuthenticated)
{
ProfileProvider provider = ProfileFactory.Provider;
m_User = provider.GetUserInfo();
if (m_User == null)
{
ScriptUtil.AlertAndRedirect("用户信息丢失,请重新登陆系统!", LogoutFilePath);
Response.End();
}
else
m_IsAuthenticated = true;
}
else
{
ScriptUtil.AlertAndRedirect("请登陆后再访问系统!", LogoutFilePath);
Response.End();
}
m_AlreadyValidate = true;
return m_IsAuthenticated;
}
/// <summary>
/// 初始化页面控件(不要放在IsPostBack中)
/// </summary>
/// <param name="pager"></param>
/// <param name="boundControl">数据绑定控件</param>
protected void InitializePageControls(AspNetPager pager, DataBoundControl boundControl)
{
this.m_dataBoundControl = boundControl;
this.m_pager = pager;
}
/// <summary>
/// 初始化页面控件(不要放在IsPostBack中)
/// </summary>
/// <param name="pager"></param>
/// <param name="repeater1"></param>
protected void InitializePageControls(AspNetPager pager, Repeater repeater1)
{
this.m_repeater = repeater1;
this.m_pager = pager;
}
#region 数据绑定(BindGrid)
/// <summary>
/// 绑定表格
/// </summary>
protected virtual void BindGrid(string table,string field,string where,string orderby)
{
int recordCount;
DataTable dt = m_DAL.GetPageDataList(this.PageIndex, this.PageSize, table, field, where, orderby, out recordCount);
BindGrid(recordCount, dt);
}
/// <summary>
/// 使用SQL语句绑定表格。
/// </summary>
/// <param name="sql"></param>
protected virtual void BindGrid(string sql)
{
int recordCount;
DataTable dt =m_DAL.GetPageDataList(this.PageIndex, this.PageSize, sql, out recordCount);
BindGrid(recordCount,dt);
}
/// <summary>
/// 使用实体数据集合绑定表格
/// </summary>
/// <param name="recordCount"></param>
/// <param name="list"></param>
protected virtual void BindGrid(int recordCount, System.Collections.IList list)
{
this.m_dataBoundControl.DataSource = list;
this.m_dataBoundControl.DataBind();
if(this.m_pager != null)
PaginationInfo(recordCount);
}
/// <summary>
/// 使用实体数据集合绑定表格
/// </summary>
/// <param name="recordCount"></param>
/// <param name="list"></param>
protected virtual void BindGrid<T>(int recordCount, IList<T> list)
{
this.m_dataBoundControl.DataSource = list;
this.m_dataBoundControl.DataBind();
PaginationInfo(recordCount);
}
/// <summary>
/// 使用实体数据集合绑定表格
/// </summary>
/// <param name="recordCount"></param>
/// <param name="dt"></param>
protected virtual void BindGrid(int recordCount, DataTable dt)
{
this.m_dataBoundControl.DataSource = dt == null ? null : dt.DefaultView;
this.m_dataBoundControl.DataBind();
PaginationInfo(recordCount);
}
/// <summary>
/// 取出全部数据绑定,不分页 add by wxg
/// </summary>
protected virtual void BindGrid(DataTable dt)
{
this.m_dataBoundControl.DataSource = dt == null ? null : dt.DefaultView;
this.m_dataBoundControl.DataBind();
}
/// <summary>
/// 取出全部数据绑定,不分页 add by wxg
/// </summary>
/// <param name="sql"></param>
protected virtual void BindGridNoPager(string sql)
{
DataTable dt = m_DAL.GetPageDataList(sql);
BindGrid( dt);
}
/// <summary>
/// 使用实体数据集合绑定Repeater控件
/// </summary>
/// <param name="recordCount"></param>
/// <param name="list"></param>
protected virtual void BindReport<T>(int recordCount, IList<T> list)
{
this.m_repeater.DataSource = list;
this.m_repeater.DataBind();
PaginationInfo(recordCount);
}
/// <summary>
/// 设置分页信息
/// </summary>
private void PaginationInfo(int recordCount)
{
PaginationInfo(recordCount, this.m_pager,this.PageSize,this.PageIndex);
//if (m_dataBoundControl != null)
// this.m_dataBoundControl.PageSize = this.PageSize;
}
/// <summary>
/// 绑定
/// </summary>
/// <param name="recordCount"></param>
/// <param name="pager"></param>
/// <param name="pageSize"></param>
/// <param name="pageIndex"></param>
public static void PaginationInfo(int recordCount, AspNetPager pager,int pageSize,int pageIndex)
{
pager.RecordCount = recordCount;
pager.AlwaysShow = true;
pager.PageSize = pageSize;
pager.PageIndexBoxType = PageIndexBoxType.DropDownList;
pager.ShowBoxThreshold = 5;
pager.CurrentPageIndex = pageIndex;
pager.HorizontalAlign = HorizontalAlign.Right;
pager.UrlPaging = true;
pager.ShowCustomInfoSection = ShowCustomInfoSection.Left;
pager.CustomInfoTextAlign = HorizontalAlign.Left;
pager.CustomInfoSectionWidth = Unit.Pixel(250);
//pager.CustomInfoHTML = "[总数]:<font color=\"blue\"><b>%RecordCount%</b></font> ";
//pager.CustomInfoHTML += "第<font color=\"red\"><b>%CurrentPageIndex%</b></font>页,共<font color=\"blue\"><b>%PageCount%</b></font>页,每页显示<font color=\"red\"><b>%PageSize%</b></font>条";
//pager.CustomInfoHTML += "[当前页/总页数]:<font color=\"red\"><b>%CurrentPageIndex%</b></font>/<font color=\"blue\"><b>%PageCount%</b></font> ";
//pager.CustomInfoHTML += "[每页]:<font color=\"red\"><b>%PageSize%</b></font>";
//pager.CustomInfoHTML = "当前第<font color=\"red\"><b>%CurrentPageIndex%</b></font>/<font color=\"blue\"><b>%PageCount%</b></font>页 共<font color=\"blue\"><b>%RecordCount%</b></font>条记录 每页<font color=\"red\"><b>%PageSize%</b></font>条";
pager.CustomInfoHTML = "当前第<b>%CurrentPageIndex%</b>/<b>%PageCount%</b>页 共<b>%RecordCount%</b>条记录 每页<b>%PageSize%</b>条 ";
pager.FirstPageText = "首页";
pager.LastPageText = "末页";
pager.NextPageText = "下页";
pager.PrevPageText = "上页";
pager.CssClass = "PagingClass";
pager.CurrentPageButtonClass = "CurrentPagingClass";
}
#endregion
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (this.m_dataBoundControl != null)
{
GridView gv = m_dataBoundControl as GridView;
if (gv != null)
{
foreach (GridViewRow row in gv.Rows)
{
//鼠标经过时,行背景色变
row.Attributes.Add("onmouseover", "this.style.backgroundColor='#FFFDD7'");
//鼠标移出时,行背景色变
row.Attributes.Add("onmouseout", "this.style.backgroundColor=''");
}
}
}
base.Render(writer);
}
/// <summary>
/// 页码
/// </summary>
protected virtual int PageIndex
{
get
{
if (this.m_pager == null && string.IsNullOrEmpty(Request.QueryString["page"]))
return 1;
if (Request.QueryString["page"] == null || Request.QueryString["page"].Trim() == "")
return this.m_pager.CurrentPageIndex;
return int.Parse(Request.QueryString["page"]);
}
set { this.m_pager.CurrentPageIndex = value; }
}
/// <summary>
/// 页长
/// </summary>
protected virtual int PageSize
{
get
{
return SysConfigs.PageSize;
}
}
/// <summary>
/// 用户ID号
/// </summary>
public int UserId
{
get { return m_User.UserId; }
}
/// <summary>
/// 用户名称
/// </summary>
public string UserName
{
get { return m_User.UserName; }
}
/// <summary>
/// 所属部门ID号
/// </summary>
public int DeptId
{
get { return m_User.DeptId; }
}
/// <summary>
/// 所属部门名称
/// </summary>
public string DeptName
{
get { return m_User.DeptName; }
}
/// <summary>
/// 单位标识号
/// </summary>
public int UnitId
{
get { return m_User.UnitId; }
}
/// <summary>
/// 单位标识号
/// </summary>
public int FDAID
{
get { return m_User.UnitId; }
}
/// <summary>
/// 单位名称
/// </summary>
public string UnitName
{
get { return m_User.UnitName; }
}
/// <summary>
/// 单位全称
/// </summary>
public string FullUnitName
{
get { return m_User.FullUnitName; }
}
///<summary>
/// 是否为主要单位
///</summary>
public bool IsMainUnit
{
get { return m_User.IsMainUnit; }
}
/// <summary>
/// 是否为管理员用户
/// </summary>
public bool IsAdministrator
{
get { return m_User.IsAdministrator; }
}
}