定义所有页面的基类,包含一些基础方法
代码
///
<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; }
}
}
/// 页面的基类
/// </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; }
}
}