国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Web用戶控件開發--分頁控件

2019-11-17 01:39:35
字體:
來源:轉載
供稿:網友

Web用戶控件開發--分頁控件

分頁是Web應用程序中最常用到的功能之一,在asp.net中,雖然自帶了一些可以分頁的數據控件,但其分頁功能并不盡如人意。本文對于這些數據控件的假分頁暫且不表,如有不明白的同學請百Google度之。

本文中實現的分頁控件是在手動分頁基礎上做的改善,將分頁實現的邏輯部分和數據控件的綁定盡可能分開,以克服手工編寫分頁代碼任務繁瑣、代碼重用率低等問題。

本文依舊是一粒粟子。

一、分頁控件素顏

image

image

image

二、分頁控件的實現

本文中將介紹兩種將分頁實現邏輯與數據控件綁定分離的實現方式:

  • 使用反射機制
  • 使用事件機制

1、基于反射機制的分頁控件

源碼

PagingHelper.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PagingHelper.ascx.cs" Inherits="PagingHelper.Controls.PagingHelper" %>
<div style="width:100%">
    <asp:LinkButton ID="lbtnFirstPage" runat="server" CausesValidation="false" onclick="lbtnPage_Click"  >首頁</asp:LinkButton>
    <asp:LinkButton ID="lbtn
    &nbsp;第<asp:Label ID="lbPageIndex" runat="server" Text=""></asp:Label>
    頁/共<asp:Label ID="lbTotalPages" runat="server" Text=""></asp:Label>
    頁&nbsp;
    <asp:LinkButton ID="lbtnNextPage" runat="server" CausesValidation="false"  onclick="lbtnPage_Click" >下一頁</asp:LinkButton>
    <asp:LinkButton ID="lbtnLastPage" runat="server" CausesValidation="false"  onclick="lbtnPage_Click" >尾頁</asp:LinkButton>
</div>

PagingHelper.ascx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Reflection;
namespace PagingHelper.Controls
{
    public partial class PagingHelper : System.Web.UI.UserControl
    {
        #region 屬性
        private int m_PageSize;
        public int PageSize         //每頁顯示記錄數
        {
            set
            {
                m_PageSize = value;
            }
            get
            {
                if (m_PageSize.Equals(0))
                {
                    m_PageSize = 10;
                }
                return m_PageSize;
            }
        }
        private int m_PageIndex;
        public int PageIndex        //當前頁頁碼
        {
            set
            {
                m_PageIndex = value;
            }
            get
            {
                if (m_PageIndex.Equals(0))
                {
                    m_PageIndex = 1;
                }
                return m_PageIndex;
            }
        }
        public int TotalItemCount   //記錄總數
        {
            set;
            private get;
        }
        public string BindDataMethodName    //綁定數據的方法名
        {
            set;
            private get;
        }
        #endregion
        #region 受保護的方法
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindPagingHelperControl();
            }
        }
        protected void lbtnPage_Click(object sender, EventArgs e)
        {
            LinkButton lbtn = sender as LinkButton;
            ReBindData(lbtn.CommandArgument);
        }
        #endregion
        #region 公共方法
        #endregion
        #region 私有方法
        private void BindPagingHelperControl()
        {
            int totalPages = (TotalItemCount % PageSize) == 0 ? TotalItemCount / PageSize : TotalItemCount / PageSize + 1;
            //顯示
            lbPageIndex.Text = PageIndex.ToString();
            lbTotalPages.Text = totalPages.ToString();
            //使能
            lbtnFirstPage.Enabled = PageIndex > 1;
            lbtnPrevPage.Enabled =  PageIndex > 1;
            lbtnLastPage.Enabled = PageIndex < totalPages;
            lbtnNextPage.Enabled = PageIndex < totalPages;
            //命令
            lbtnFirstPage.CommandArgument = "1";
            lbtnPrevPage.CommandArgument = (PageIndex - 1).ToString();
            lbtnNextPage.CommandArgument = (PageIndex + 1).ToString();
            lbtnLastPage.CommandArgument = totalPages.ToString();
        }
        private void ReBindData(string pageIndex)
        {
            PageIndex = int.Parse(pageIndex);
            Object obj = null;  //空間所在的容器
            if (base.Parent is HtmlForm)
            {
                obj = this.Page;
            }
            else if (base.Parent is ContentPlaceHolder)
            {
                obj = this.Page.Master.Page;
            }
            else
            {
                obj = base.Parent;
            }
            MethodInfo methodInfo = obj.GetType().GetMethod(BindDataMethodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            methodInfo.Invoke(obj, null);
            BindPagingHelperControl();
        }
        #endregion
    }
}

Demo:

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PagingHelper.Default" %>
<%@ Register src="Controls/PagingHelper.ascx" tagname="PagingHelper" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="gvDemo" runat="server">
        </asp:GridView>
        <br />
        <uc1:PagingHelper ID="PagingHelper1" runat="server" PageSize="2" />
    </div>
    </form>
</body>
</html>

Default.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace PagingHelper
{
    public partial class Default : System.Web.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神木县| 皮山县| 福州市| 田林县| 天水市| 潼关县| 额尔古纳市| 呼和浩特市| 镇坪县| 赫章县| 称多县| 囊谦县| 固始县| 台前县| 分宜县| 哈尔滨市| 五大连池市| 通州市| 大关县| 方山县| 博爱县| 红桥区| 如皋市| 三门峡市| 额济纳旗| 来安县| 汝阳县| 莒南县| 茶陵县| 信丰县| 南宫市| 平乡县| 托克逊县| 张家川| 德庆县| 呼玛县| 什邡市| 盈江县| 德保县| 胶南市| 虹口区|