using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace MyQuery.MyControl
{
///
[DefaultProperty("PageSize"),
ParseChildren(false),
PersistChildren(false),
Description("專用于ASP.Net Web應用程序的分頁控件"),
Designer(typeof(MyPagerDesigner)),
ToolboxData("<{0}:mypager runat="server">
")]
public class MyPager : Panel, INamingContainer, IPostBackEventHandler
{
#region 屬性
///
[Browsable(true),
Description("要顯示的頁索引數值按鈕的數目(0為無數字按鈕及打印按鈕)"),
Category("導航按鈕"),
DefaultValue(10)]
public int NumericButtonCount
{
get
{
object obj = ViewState["NumericButtonCount"];
return (obj == null) ? 10 : (int)obj;
}
set
{
if (value != 10)
ViewState["NumericButtonCount"] = value;
}
}
///
[Browsable(true),
Description("顯示打印按鈕"),
Category("導航按鈕"),
DefaultValue(false)]
public bool EnablePrint
{
get
{
object obj = ViewState["EnablePrint"];
return (obj == null) ? false : (bool)obj;
}
set
{
ViewState["EnablePrint"] = value;
}
}
///
[Browsable(true),
Description("每頁顯示的記錄數,0為打印模式,如有查詢條件請將其id=tjWhere"),
Category("分頁"),
DefaultValue(20)]
public int PageSize
{
get
{
object obj = ViewState["PageSize"];
return (obj == null) ? 20 : (int)obj;
}
set
{
if (value != 20)
ViewState["PageSize"] = value;
}
}
///
[ReadOnly(true),
Browsable(false),
Description("當前顯示頁的索引"),
Category("分頁"),
DefaultValue(1),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int CurrentPageIndex
{
get
{
object cpage = ViewState["CurrentPageIndex"];
int pindex = (cpage == null) ? 1 : (int)cpage;
if (pindex > PageCount && PageCount > 0)
return PageCount;
else if (pindex < 1)
return 1;
return pindex;
}
set
{
ViewState["CurrentPageIndex"] = value;
}
}
///
[Browsable(false),
Description("要分頁的所有記錄的總數,該值須在程序運行時設置,默認值為0。"),
Category("分頁"),
DefaultValue(0)]
public int RecordCount
{
get
{
object obj = ViewState["Recordcount"];
return (obj == null) ? 0 : (int)obj;
}
set { ViewState["Recordcount"] = value; }
}
///
[Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int PageCount
{
get
{
if (PageSize > 0)
{
return (int)Math.Ceiling((double)RecordCount / (double)PageSize);
}
else
{
return 1;
}
}
}
///
[Browsable(false),
Description("是否啟用控件的視圖狀態,該屬性的值必須為true,不允許用戶設置。"),
DefaultValue(true),
Category("Behavior")]
public override bool EnableViewState
{
get
{
return base.EnableViewState;
}
set
{
base.EnableViewState = true;
}
}
#endregion
#region 重寫控件的方法
///
///
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
if (this.Page != null)
this.Page.VerifyRenderingInServerForm(this);
base.AddAttributesToRender(writer);
}
///
///
包含事件數據的
【共" + RecordCount.ToString() + "條"); if (pageCount > 1) { writer.Write(@"條/頁 共" + pageCount.ToString() + "頁】 | "); | "); if (p == 1) { writer.Write("9"); } else { writer.Write("9"); } int n = NumericButtonCount; if (n == 0) { if (p == 1) { writer.Write("7"); } else { writer.Write("7"); } writer.Write("" + p.ToString() + ""); |
if (p == pageCount)
{
writer.Write("8");
}
else
{
writer.Write("8");
}
}
else
{
if (n > 5 && p > 100)
{
n = 5;
}
int pageoffset = 0;
int endpage = 0;
if (pageCount <= n)
{
pageoffset = 0;
endpage = pageCount;
}
else
{
if (p <= n / 2)
{
pageoffset = 0;
}
else
{
pageoffset = p - 1 - n / 2;
}
if ((pageoffset + n) > pageCount)
{
pageoffset = pageCount - n;
endpage = pageCount;
}
else
{
endpage = pageoffset + n;
}
}
for (int i = pageoffset + 1; i <= endpage; i++)
{
if (i == p)
{
writer.Write("" + i.ToString() + "");
}
else
{
writer.Write("[" + i.ToString() + "]");
}
}
}
if (p == pageCount)
{
writer.Write(":");
}
else
{
writer.Write(":");
}
writer.Write("");
}
writer.Write("");
}
else if (Page.IsPostBack)
{
writer.Write("
沒有滿足條件的記錄!
");
}
else
{
writer.Write("
請設定查詢條件后點[查詢]!
");
}
}
#endregion
#region 事件
#region IPostBackEventHandler事件
///
///
public void RaisePostBackEvent(string args)
{
int pageIndex = 1;
try
{
if (args != null)
{
pageIndex = int.Parse(args);
}
}
catch
{
pageIndex = CurrentPageIndex;
}
OnPageChanged(new PageChangedEventArgs(pageIndex));
}
#endregion
#region PageChanged Event
///
public event PageChangedEventHandler PageChanged;
///
///
一個
#endregion
#endregion
}
#region PageChangedEventHandler 代理
///
public delegate void PageChangedEventHandler(object src, PageChangedEventArgs e);
#endregion
#region PageChangedEventArgs 類
///
///
有關 PageChangedEventArgs 實例的初始屬性值列表,請參閱 PageChangedEventArgs 構造函數。
///public sealed class PageChangedEventArgs : EventArgs
{
private readonly int _newpageindex;
///
///
用戶從
///
public int NewPageIndex
{
get { return _newpageindex; }
}
}
#endregion
///
public class MyPagerDesigner : System.Web.UI.Design.WebControls.PanelContainerDesigner
{
///
public override bool AllowResize
{
get { return false; }
}
///
///
public override string GetDesignTimeHtml()
{
MyPager wb=(MyPager)Component;
wb.RecordCount=225;
StringWriter sw=new StringWriter();
HtmlTextWriter writer=new HtmlTextWriter(sw);
wb.RenderControl(writer);
return sw.ToString();
}
///
///
要為其顯示錯誤信息的異常。
///
protected override string GetErrorDesignTimeHtml(Exception e)
{
string errorstr="創建控件時出錯:"+e.Message;
return CreatePlaceHolderDesignTimeHtml(errorstr);
}
}
}
構建一個WEB開發的基礎框架(主要包括數據庫處理、頁面框架及工具類),形成ASP.NET信息管理系統快速開發架構。
一、編輯配置支持單表數據的增加和修改,針對開發人員實現的編輯頁面可方便擴展主表新增字段
二、列表實現了復雜查詢條件、合并行列(分組求和的處理)、匯總行及鉆取數據和圖表的鉆取
三、框架實現了基于XML定制的列表查詢及圖表展現使開發人員專注于系統的業務實現,節省開發時間,提高開發效率
試用登錄http://121.18.78.216/
本文地址:http://www.filmpoker.net/news/166877816885049.html
版權聲明:本文采用[BY-NC-SA]協議進行授權,如無特別說明,轉載請注明本文地址!