自定义的翻页控件

1 前台:

<table width="100%" border="0" cellspacing="0" cellpadding="0" style="font-size:12px;">
    <tr>
        <td class="STYLE4" style="padding-left:50px;">
        共<asp:Label ID="lblTotalRows" runat="server"></asp:Label>条
         当前第
           <asp:Label ID="LabelCurrentPage" runat="server" Text="0"></asp:Label>/<asp:Label ID="LabelPageCount" runat="server" Text="0"></asp:Label>页
        </td>
        <td>
        <table border="0" align="right" cellpadding="0" cellspacing="0">
        <tr>
            <td style="font-size: small;" colspan="4">
                <asp:LinkButton ID="PageFirst" runat="server" OnClick="PageFirst_Click" CssClass="linkBt">
                                            第一页</asp:LinkButton>&nbsp;
                 <asp:LinkButton ID="PagePrev" runat="server" OnClick="PagePrev_Click"   CssClass="linkBt">上一页</asp:LinkButton>
                 &nbsp;<asp:LinkButton ID="PageNext" runat="server" OnClick="PageNext_Click" CssClass="linkBt">下一页</asp:LinkButton>
                 &nbsp;<asp:LinkButton ID="PageEnd" runat="server" OnClick="PageEnd_Click" CssClass="linkBt">尾 页</asp:LinkButton>
                  &nbsp;<asp:DropDownList ID="GoPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="GoPage_SelectedIndexChanged">
                </asp:DropDownList>
            </td>
        </tr>
        </table>
        </td>
    </tr>
</table>

2 后台:

  private int mCurrentPage;
    private DataSet mDataSet = new DataSet();
    private int mPageCount;
    private int mPageSize;
    private int mRecordCount;

    // Methods
    public PageNavigation()
    {
        this.SetDefaultValue();
    }

    public DataSet GetPage()
    {
        int num;
        DataSet set = new DataSet();
        DataTable table = new DataTable();
        if (this.mDataSet == null)
        {
            return null;
        }
        table = this.mDataSet.Tables[0].Clone();
        if (this.mCurrentPage > this.mPageCount)
        {
            this.mCurrentPage = this.mPageCount;
        }
        if (this.mCurrentPage > 0)
        {
            num = (this.mCurrentPage - 1) * this.mPageSize;
        }
        else
        {
            num = 0;
        }
        for (int i = 1; i <= this.mPageSize; i++)
        {
            if (num >= this.mRecordCount)
            {
                break;
            }
            table.ImportRow(this.mDataSet.Tables[0].Rows[num]);
            num++;
        }
        set.Tables.Add(table);
        return set;
    }

    protected void GoPage_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.mCurrentPage = this.GoPage.SelectedIndex + 1;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!base.IsPostBack)
        {
            this.mCurrentPage = 1;
        }
        else
        {
            this.mCurrentPage = Convert.ToInt32(this.ViewState["CurrnetPage"]);
            if (this.mCurrentPage == 0)
            {
                this.mCurrentPage = 1;
            }
        }
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        this.LabelCurrentPage.Text = this.mCurrentPage.ToString();
        this.LabelPageCount.Text = this.mPageCount.ToString();
        this.lblTotalRows.Text = this.mRecordCount.ToString();
        this.GoPage.Items.Clear();
        for (int i = 1; i <= this.mPageCount; i++)
        {
            ListItem item = new ListItem();
            item.Text = i.ToString();
            if (this.mCurrentPage == i)
            {
                item.Selected = true;
            }
            this.GoPage.Items.Add(item);
        }
        if (this.mCurrentPage <= 1)
        {
            this.PageFirst.Enabled = false;
            this.PagePrev.Enabled = false;
        }
        else
        {
            this.PageFirst.Enabled = true;
            this.PagePrev.Enabled = true;
        }
        if (this.mCurrentPage == this.mPageCount)
        {
            this.PageEnd.Enabled = false;
            this.PageNext.Enabled = false;
        }
        else
        {
            this.PageEnd.Enabled = true;
            this.PageNext.Enabled = true;
        }
        this.ViewState["CurrnetPage"] = this.mCurrentPage;
        this.ViewState["PageCount"] = this.mPageCount;
        this.ViewState["PageSize"] = this.mPageSize;
    }

    protected void PageEnd_Click(object sender, EventArgs e)
    {
        this.mCurrentPage = this.mPageCount;
    }

    protected void PageFirst_Click(object sender, EventArgs e)
    {
        this.mCurrentPage = 1;
    }

    protected void PageNext_Click(object sender, EventArgs e)
    {
        if (this.mCurrentPage < this.mPageCount)
        {
            this.mCurrentPage++;
        }
    }

    protected void PagePrev_Click(object sender, EventArgs e)
    {
        if (this.mCurrentPage > 1)
        {
            this.mCurrentPage--;
        }
    }

    private void SetDefaultValue()
    {
        this.mPageSize = 0x10;
    }

    Properties
    //protected HttpApplication ApplicationInstance
    //{
    //    get
    //    {
    //        return this.Context.ApplicationInstance;
    //    }
    //}

    public int CurrentPage
    {
        get
        {
            return this.mCurrentPage;
        }
        set
        {
            this.mCurrentPage = value;
        }
    }

    public DataSet DataSource
    {
        get
        {
            return this.mDataSet;
        }
        set
        {
            this.mDataSet = value;
            if (this.mDataSet == null)
            {
                this.mPageCount = 0;
                this.mRecordCount = 0;
            }
            else
            {
                this.mRecordCount = this.mDataSet.Tables[0].Rows.Count;
                this.mPageCount = Convert.ToInt32((int)(this.mRecordCount / this.mPageSize));
                if (this.mDataSet.Tables[0].Rows.Count > (this.mPageCount * this.mPageSize))
                {
                    this.mPageCount++;
                }
            }
        }
    }

    public int PageCount
    {
        get
        {
            return this.mPageCount;
        }
        set
        {
            this.mPageCount = value;
        }
    }

    public int PageSize
    {
        get
        {
            return this.mPageSize;
        }
        set
        {
            this.mPageSize = value;
        }
    }

    public int RecordCount
    {
        get
        {
            return this.mRecordCount;
        }
    }

3 在其他页面上写上:

     顶部引入:<%@ Register TagPrefix="pageInfo" TagName="pageNavi" Src="~/PageNavigation.ascx"%>

  body 中写入:  <pageInfo:pageNavi ID="PageNavInfo" runat="server" PageSize="22"/>

cs文件中写入:

  protected void Page_Load(object sender, EventArgs e)
    {

     
         this.PageNavInfo.DataSource = getDataInfo();
        this.PageNavInfo.DataBind();
    }

getDataInfo()函数是通过底层取得需要在repeater控件中绑定的数据,返回一个数据集。

 

  protected void Page_LoadComplete(object sender, EventArgs e)
    {
        Repeater1.DataSource = this.PageNavInfo.GetPage();
        Repeater1.DataBind();

    }


 

 

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值