您的位置:首页 > 其它

通用的分页用户控件

2011-01-20 11:57 387 查看
前台代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PagerList.ascx.cs" Inherits="PagerList" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>

<asp:Table width="100%" runat="server" id="tblPager" HorizontalAlign="Center" CssClass="table">

<asp:TableRow>

<asp:TableCell HorizontalAlign="Center" Font-Size="0.92em">

<FONT class="fontClass">共<asp:label id="lblRecordCount" runat="server">0</asp:label>筆</FONT>

 | <asp:linkbutton id="btnFirst" runat="server" CommandArgument="fist" CssClass="fontClass">第一頁</asp:linkbutton> |

<asp:linkbutton id="btnPrev" runat="server" CommandArgument="prev" CssClass="fontClass">

上一頁</asp:linkbutton> | <FONT class="fontClass">到第

<asp:DropDownList ID="txtGoPage" runat="server" AutoPostBack="true"></asp:DropDownList> 頁</FONT> |

<asp:linkbutton id="btnNext" runat="server" CommandArgument="next" CssClass="fontClass">

下一頁</asp:linkbutton> |

<asp:linkbutton id="btnLast" runat="server" CommandArgument="last" CssClass="fontClass">

最末頁</asp:linkbutton> | <FONT class="fontClass">



<asp:label id="lblCurrentIndex" runat="server">1</asp:label>頁/共

<asp:label id="lblPageCount" runat="server">0</asp:label>頁

 </FONT>

</asp:TableCell>

</asp:TableRow>

</asp:Table>

后台代码:

using System;

using System.Data;

using System.Drawing;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.ComponentModel;

public partial class PagerList : System.Web.UI.UserControl

{

#region 數據綁定事件

//public delegate void DataListPageChangedEventHandler(object sender , DataGridPageChangedEventArgs e);

/// <summary>

/// 數據綁定事件

/// </summary>

public delegate void DataBindEventHandler();

#endregion

#region 初始化網頁

protected void Page_Load(object sender, EventArgs e)

{

// 在這裡放置使用者程式碼以初始化網頁

if (!Page.IsPostBack)

{

//txtGoPage.Attributes.Add("onclick", "this.select()");

txtGoPage.Style.Add("text-align", "center");

ListBind();

txtGoPage.SelectedValue = lblCurrentIndex.Text;

}

}

#endregion

#region Web Form 設計工具產生的程式碼

protected override void OnInit(EventArgs e)

{

//

// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。

//

this.PageIndexChanged += new DataGridPageChangedEventHandler(OnPageIndexChanged);

InitializeComponent();

base.OnInit(e);

}

/// <summary>

/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改

/// 這個方法的內容。

/// </summary>

private void InitializeComponent()

{

this.Load += new System.EventHandler(this.Page_Load);

this.btnFirst.Click += new EventHandler(btnFirst_Click);

this.btnLast.Click += new EventHandler(btnLast_Click);

this.btnNext.Click += new EventHandler(btnNext_Click);

this.btnPrev.Click += new EventHandler(btnPrev_Click);

//this.btnGoPage.Click+=new EventHandler(txtGoPage_TextChanged);

this.txtGoPage.SelectedIndexChanged += new EventHandler(txtGoPage_TextChanged);

}

#endregion

#region 變量定義

/// <summary>

/// 綁定數據

/// </summary>

public event DataBindEventHandler BindData;

/// <summary>

/// 換頁事件

/// </summary>

private event DataGridPageChangedEventHandler PageIndexChanged;

#endregion

#region 第一頁

private void btnFirst_Click(object sender, System.EventArgs e)

{

int intNewPage = 1;

this.PageIndexChanged(this, new DataGridPageChangedEventArgs(sender, intNewPage));

}

#endregion

#region 前一頁

private void btnPrev_Click(object sender, System.EventArgs e)

{

int intNewPage = CurrentPageIndex - 1;

this.PageIndexChanged(this, new DataGridPageChangedEventArgs(sender, intNewPage));

}

#endregion

#region 下一頁

private void btnNext_Click(object sender, System.EventArgs e)

{

int intNewPage = CurrentPageIndex + 1;

this.PageIndexChanged(this, new DataGridPageChangedEventArgs(sender, intNewPage));

}

#endregion

#region 最後一頁

private void btnLast_Click(object sender, System.EventArgs e)

{

int intNewPage = PageCount;

this.PageIndexChanged(this, new DataGridPageChangedEventArgs(sender, intNewPage));

}

#endregion

#region 改變第幾頁的textbox值

private void txtGoPage_TextChanged(object sender, System.EventArgs e)

{

try

{

int intNewPage = Convert.ToInt32(txtGoPage.SelectedValue);

this.PageIndexChanged(this, new DataGridPageChangedEventArgs(sender, intNewPage));

}

catch

{

int intNewPage = Convert.ToInt32(lblCurrentIndex.Text);

this.PageIndexChanged(this, new DataGridPageChangedEventArgs(sender, intNewPage));

}

}

#endregion

#region 設定link是否可以點選

protected override void Render(System.Web.UI.HtmlTextWriter writer)

{

if (this.CurrentPageIndex <= 1)

{

btnFirst.Enabled = false;

btnPrev.Enabled = false;

}

else

{

btnFirst.Enabled = true;

btnPrev.Enabled = true;

}

if (this.CurrentPageIndex >= this.PageCount)

{

btnNext.Enabled = false;

btnLast.Enabled = false;

}

else

{

btnNext.Enabled = true;

btnLast.Enabled = true;

}

if (this.PageCount <= 1)

{

//this.btnGoPage.Enabled=false;

txtGoPage.Enabled = false;

}

else

{

//this.btnGoPage.Enabled=true;

txtGoPage.Enabled = true;

}

base.Render(writer);

}

#endregion

#region 取得或設定當前頁

/// <summary>

/// 取得或設定當前頁

/// </summary>

public int CurrentPageIndex

{

get

{

if (ViewState["CurrentPageIndex"] == null) return 1;

int _tempI=Convert.ToInt32(ViewState["CurrentPageIndex"]);

if (_tempI < 1)

{

return 1;

}

else

{

return _tempI;

}

}

set

{

ViewState["CurrentPageIndex"] = value;

this.lblCurrentIndex.Text = CurrentPageIndex.ToString();

}

}

#endregion

/// <summary>

/// 頁大小

/// </summary>

public int PageSize

{

get

{

if (ViewState["PageSize"] == null) return 10;

return Convert.ToInt32(ViewState["PageSize"]);

}

set { ViewState["PageSize"] = value; }

}

#region 取得或設定總頁數

/// <summary>

/// 取得或設定總頁數

/// </summary>

public int PageCount

{

get

{

int pCount = 0;

if (PageSize > 0)

{

pCount = RecordCount / PageSize + (RecordCount % PageSize > 0 ? 1 : 0);

}

return pCount;

}

}

#endregion

#region 取得或設定總筆數

/// <summary>

/// 取得或設定總筆數

/// </summary>

public int RecordCount

{

get

{

if (ViewState["RecordCount"] == null) return 0;

return Convert.ToInt32(ViewState["RecordCount"]);

}

set

{

ViewState["RecordCount"] = value;

this.lblRecordCount.Text = RecordCount.ToString();

this.lblPageCount.Text = PageCount.ToString();

ListBind();

if (CurrentPageIndex != 0)

{

if (CurrentPageIndex > PageCount)

{

CurrentPageIndex = PageCount;

}

txtGoPage.SelectedValue = CurrentPageIndex.ToString();

}

}

}

#endregion

#region 改變頁碼

private void OnPageIndexChanged(object source, DataGridPageChangedEventArgs e)

{

this.CurrentPageIndex = e.NewPageIndex;

this.BindData();

}

#endregion

#region 搜索時綁定List的值(當頁面搜索動作不重新調用本頁面時使用)

/// <summary>

/// 搜索時綁定List的值

/// </summary>

private void ListBind()

{

txtGoPage.Items.Clear();

for (int i = 1; i < this.PageCount + 1; i++)

{

txtGoPage.Items.Add(new ListItem(i.ToString(), i.ToString()));

}

}

#endregion

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: