亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品丝袜白浆摸在线| 欧美日韩午夜视频在线观看| 日韩日本欧美亚洲| 国产精品伦子伦免费视频| 最近2019年手机中文字幕| 黑人巨大精品欧美一区免费视频| 亚洲三级av在线| 亚洲成人a级网| 久久这里有精品| 久久久久久国产精品| 精品女同一区二区三区在线播放| 欧美激情在线观看视频| 国产欧美日韩精品专区| 韩国美女主播一区| 亚洲自拍偷拍视频| 北条麻妃一区二区在线观看| 国内久久久精品| 国产一区二区三区三区在线观看| 亚洲国产日韩欧美综合久久| 中文字幕国产精品| 欧美激情在线视频二区| 91久久精品国产91性色| 国产视频丨精品|在线观看| 一区二区欧美激情| 国产欧美精品在线| 国产香蕉97碰碰久久人人| 国产91在线视频| 成人综合网网址| 欧美日韩在线免费| 日韩久久精品电影| 中文字幕亚洲欧美日韩在线不卡| 在线观看不卡av| 欧美国产日韩中文字幕在线| 国外成人在线播放| 午夜精品一区二区三区在线视| 国产999精品久久久影片官网| 欧美综合一区第一页| 久久久影视精品| 深夜福利国产精品| 国产亚洲精品久久久久久| 欧洲成人免费视频| 亚洲精品日韩激情在线电影| 亚洲男子天堂网| 成人美女av在线直播| 精品性高朝久久久久久久| 97色在线观看免费视频| 午夜伦理精品一区| 色偷偷综合社区| 国内外成人免费激情在线视频网站| 青青草一区二区| 亚洲色图色老头| 欧美大片网站在线观看| 国产日韩一区在线| 福利视频导航一区| 日本久久久久久| 久久久久久久久国产| 中文欧美在线视频| 色婷婷av一区二区三区在线观看| 国产精品香蕉国产| 欧美伊久线香蕉线新在线| 亚洲日韩欧美视频一区| 亚洲国产欧美一区| 中文字幕国产日韩| 中文一区二区视频| 国产精品久久久久9999| 日韩精品中文字幕久久臀| 欧美大片免费观看| 国产91在线播放精品91| 在线电影av不卡网址| 91av在线免费观看视频| 66m—66摸成人免费视频| 欧美极品美女视频网站在线观看免费| 亚洲精品视频网上网址在线观看| 欧美性黄网官网| 亚洲国产日韩欧美在线动漫| 久久精品国产电影| 亚洲国产又黄又爽女人高潮的| 日韩大片在线观看视频| 亚洲激情中文字幕| 亚洲成人av中文字幕| 91最新国产视频| 88xx成人精品| 中文字幕日韩在线观看| 久久久视频精品| 91成人性视频| 成人日韩av在线| 欧洲精品在线视频| 亚洲男人的天堂在线| 欧美激情国产日韩精品一区18| 日韩高清免费观看| 亚洲第一综合天堂另类专| 91精品国产色综合久久不卡98口| 韩国福利视频一区| 成人精品久久一区二区三区| 欧美另类xxx| 国内揄拍国内精品少妇国语| 色777狠狠综合秋免鲁丝| 国产精品福利观看| 国产在线视频一区| 91理论片午午论夜理片久久| 美女精品视频一区| 欧美日韩精品中文字幕| 一区二区三区四区精品| 欧美日韩亚洲精品一区二区三区| 欧美日韩国产综合视频在线观看中文| 97精品视频在线| 亚洲最大中文字幕| 福利二区91精品bt7086| 美女久久久久久久| 国产亚洲视频在线观看| 日韩在线中文视频| 欧美日韩视频在线| 日韩在线观看免费av| 亚洲娇小xxxx欧美娇小| 欧美一区二区三区精品电影| 欧美精品aaa| 久久免费精品视频| 91sao在线观看国产| 亚洲男人7777| 亚洲国产精品va在线观看黑人| 亚洲精品国偷自产在线99热| 在线亚洲男人天堂| 成人福利免费观看| 亚洲深夜福利网站| 中文字幕亚洲无线码在线一区| 日韩欧美国产黄色| 国产一区二区三区视频在线观看| www.99久久热国产日韩欧美.com| 国产精品永久免费视频| 日韩高清有码在线| 45www国产精品网站| 中文字幕视频在线免费欧美日韩综合在线看| 成人免费自拍视频| 国产午夜精品久久久| 亚洲欧洲在线播放| 国产精品国产三级国产专播精品人| 国产精品露脸av在线| 久久91亚洲人成电影网站| 日韩美女免费线视频| 国产精品久久中文| 日韩美女视频在线观看| 欧美壮男野外gaytube| 欧美高清电影在线看| 98精品国产高清在线xxxx天堂| 欧美精品亚州精品| 自拍亚洲一区欧美另类| 欧美精品电影免费在线观看| 日韩国产一区三区| 国产成人精品综合久久久| 成人免费看片视频| 亚洲国产精品高清久久久| 日韩精品在线观看网站| 欧美做受高潮电影o| 2021国产精品视频| 亚洲乱码一区av黑人高潮| 国产精品精品一区二区三区午夜版| 91精品啪在线观看麻豆免费| 国产一区av在线| 国产一区二区成人| 国产成人亚洲综合91精品| 欧美电影免费看| 国产精品日韩在线观看| 黑人狂躁日本妞一区二区三区| 国产精品中文久久久久久久|