麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Web用戶控件開發(fā)--分頁控件

2019-11-17 01:39:35
字體:
供稿:網(wǎng)友

Web用戶控件開發(fā)--分頁控件

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

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

本文依舊是一粒粟子。

一、分頁控件素顏

image

image

image

二、分頁控件的實現(xiàn)

本文中將介紹兩種將分頁實現(xiàn)邏輯與數(shù)據(jù)控件綁定分離的實現(xiàn)方式:

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

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         //每頁顯示記錄數(shù)
        {
            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   //記錄總數(shù)
        {
            set;
            private get;
        }
        public string BindDataMethodName    //綁定數(shù)據(jù)的方法名
        {
            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.
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 中日韩乱码一二新区 | 精品国产一区二区三区久久久狼牙 | 久久免费视频一区 | 精品一区二区三区中文字幕老牛 | 线观看免费完整aaa 一二区成人影院电影网 | 色婷婷久久久亚洲一区二区三区 | 老司机免费福利午夜入口ae58 | 欧美一区2区三区4区公司二百 | 色妹子久久 | 亚洲国产精品久久久久婷婷老年 | 中国杭州少妇xxxx做受 | 久久亚洲成人网 | 婷婷久久青草热一区二区 | 亚洲成年人免费网站 | 国产69精品久久久久久 | 亚洲视频成人 | 色屁屁xxxxⅹ免费视频 | 国产精品久久久久久久久久三级 | 日本精品免费观看 | 在线成人精品视频 | 91av网址 | 亚洲成人激情在线 | 成人片免费视频 | 久久久一区二区三区视频 | 深夜视频福利 | 久草最新| 日韩中文字幕一区二区三区 | 日本不卡一区二区三区在线观看 | 亚洲一级簧片 | 久久久久久久久久久亚洲 | 久久草在线观看视频 | 欧美 videos粗暴 | 成人在线免费观看小视频 | 久久久三区 | 欧美日韩后 | 黄色片免费视频 | 日本精品一区二区 | 亚洲第一成人在线视频 | 小视频在线看 | 99欧美精品 | 国产精品久久久久久久久久久久久久久久 |