zoukankan      html  css  js  c++  java
  • 分页用户控件

    参考http://www.cnblogs.com/hongyuniu/archive/2008/08/05/1261014.html

    前台代码

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <div style="text-align:right; 100%;background-color:#c6d7ef">
    <table cellpadding="0" cellspacing="0">
        <tr>
            <td style=" 200px; text-align: right">
                <asp:Label ID="Label1" runat="server" Text="当前页:"></asp:Label><asp:Label ID="lblCurrentInfo"
                    runat="server">1</asp:Label>&nbsp; &nbsp;<asp:Label ID="Label2" runat="server" Text=""></asp:Label><asp:Label ID="lblCount"
                    runat="server">1</asp:Label><asp:Label ID="Label3" runat="server" Text=""></asp:Label><asp:Label
                        ID="lblTotalNum" runat="server">5</asp:Label><asp:Label ID="Label5" runat="server" Text=""></asp:Label>
                &nbsp; &nbsp;
            </td>
            <td style=" 33px">
                <asp:LinkButton ID="lbtnFirst" runat="server" OnClick="PageIndex_Changed">首页</asp:LinkButton></td>
            <td style=" 50px">
                <asp:LinkButton ID="lbtnPrev" runat="server" OnClick="PageIndex_Changed">上一页</asp:LinkButton></td>
            <td style=" 50px">
                <asp:LinkButton ID="lbtnNext" runat="server" OnClick="PageIndex_Changed">下一页</asp:LinkButton></td>
            <td style=" 33px">
                <asp:LinkButton ID="lbtnLast" runat="server" OnClick="PageIndex_Changed">末页</asp:LinkButton></td>
        </tr>
    </table></div>
    View Code

    后台代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;
    using System.Data;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    
    public partial class WebUserControl : System.Web.UI.UserControl
    {
        #region Properties
        [BrowsableAttribute(true)]
        [DescriptionAttribute("要绑定数据的GridView.ID")]
        [DefaultValueAttribute("")]
        [CategoryAttribute("Appearance")]
        public string gvID
        {
            get
            {
                return (ViewState["gvID"] == null) ? "" : ViewState["gvID"].ToString();
            }
            set
            {
                ViewState["gvID"] = value;
            }
        }
    
        [BrowsableAttribute(true)]
        [DescriptionAttribute("每一页显示的行数,默认每页10条")]
        [DefaultValueAttribute("")]
        [CategoryAttribute("Appearance")]
        public int PageSize
        {
            get
            {
                return (ViewState["PageSize"] == null) ? 10 : Convert.ToInt32(ViewState["PageSize"]);
            }
            set
            {
                ViewState["PageSize"] = value;
            }
        }
    
        [BrowsableAttribute(true)]
        [DescriptionAttribute("要从中读取数据的DataTable.Name")]
        [DefaultValueAttribute("")]
        [CategoryAttribute("Data")]
        public string TableName
        {
            get
            {
                return (ViewState["TableName"] == null) ? "" : ViewState["TableName"].ToString();
            }
            set
            {
                ViewState["TableName"] = value;
            }
        }
    
        [BrowsableAttribute(true)]
        [DescriptionAttribute("要从中读取数据的DataTable.Name")]
        [DefaultValueAttribute("")]
        [CategoryAttribute("Data")]
        public string OrderBy
        {
            get
            {
                return (ViewState["OrderBy"] == null) ? "" : ViewState["OrderBy"].ToString();
            }
            set
            {
                ViewState["OrderBy"] = value;
            }
        }
        public string PrimaryKey
        {
            get
            {
                return (ViewState["PrimaryKey"] == null) ? "" : ViewState["PrimaryKey"].ToString();
            }
            set
            {
                ViewState["PrimaryKey"] = value;
            }
        }
        [BrowsableAttribute(true)]
        [DescriptionAttribute("读取数据的Sql语句,多表 联合查询")]
        [DefaultValueAttribute("")]
        [CategoryAttribute("Data")]
        public string Sql
        {
            get
            {
                return (ViewState["Sql"] == null) ? "" : ViewState["Sql"].ToString();
            }
            set
            {
                ViewState["Sql"] = value;
            }
        }
    
        [BrowsableAttribute(true)]
        [DescriptionAttribute("过滤条件,可以为空")]
        [DefaultValueAttribute("")]
        [CategoryAttribute("Data")]
        public string FilterString
        {
            get
            {
                return (ViewState["FilterString"] == null) ? "" : ViewState["FilterString"].ToString();
            }
            set
            {
                ViewState["FilterString"] = value;
            }
        }
    
        [BrowsableAttribute(false)]
        [DescriptionAttribute("当前页数")]
        [DefaultValueAttribute("")]
        public int CurrentInfo
        {
            get
            {
                return Convert.ToInt32(lblCurrentInfo.Text.Trim());
            }
        }
        #endregion
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString);
       // OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString);
       // OleDbCommand comm = new OleDbCommand();
        SqlCommand comm = new SqlCommand();
        string sql = "";
    
        protected override void OnInit(EventArgs e)
        {
            this.Visible = false;
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //this.lbtnPrev.Enabled = false;
                //this.lblCurrentInfo.Text = "1";
            }
        }
    
        /// <summary>
        /// 绑定GridView控件,供页面调用
        /// </summary>
        public void BindGridView()
        {
            GetPageNum();
            //this.Visible = false;
            this.lbtnPrev.Enabled = false;
            this.lblCurrentInfo.Text = "1";
            BindGV();
        }
    
        /// <summary>
        /// 绑定GridView控件,供页面调用
        /// </summary>
        /// <param name="currentInfo">要显示的当前页</param>
        public void BindGridView(int currentInfo)
        {
            GetPageNum();
    
            //this.Visible = false;
            this.lbtnPrev.Enabled = false;
            this.lblCurrentInfo.Text = currentInfo.ToString();
            BindGV();
        }
    
        /// <summary>
        /// 获取结果总数目和总页数
        /// </summary>
        /// <returns>总页数</returns>
        public int GetPageNum()
        {
            sql = "";
            sql += "select count(*) from ( ";
            sql += Sql;
            sql += FilterString + ") as a ";
            comm.CommandText = sql;
            comm.Connection = conn;
            conn.Open();
            int TotalNum = Convert.ToInt32(comm.ExecuteScalar());
            conn.Close();
            lblTotalNum.Text = TotalNum.ToString();
            int pageNum = Convert.ToInt32(Math.Ceiling(Convert.ToDouble((double)TotalNum / PageSize)));
            lblCount.Text = pageNum.ToString();
    
            return TotalNum;
        }
    
        #region 按钮处理事件
        /**/
        /// <summary>
        /// 按钮处理事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void PageIndex_Changed(object sender, EventArgs e)
        {
            LinkButton linkbtn = (LinkButton)sender;
            switch (linkbtn.ID.Trim())
            {
                case "lbtnFirst":
                    this.lblCurrentInfo.Text = "1";
    
                    BindGV();
    
                    break;
                case "lbtnPrev":
    
                    this.lblCurrentInfo.Text = (Convert.ToInt32(this.lblCurrentInfo.Text) - 1).ToString();
    
    
                    BindGV();
    
                    break;
                case "lbtnNext":
    
                    this.lblCurrentInfo.Text = (Convert.ToInt32(this.lblCurrentInfo.Text) + 1).ToString();
    
                    BindGV();
    
                    break;
                case "lbtnLast":
                    this.lblCurrentInfo.Text = this.lblCount.Text;
    
                    BindGV();
    
                    break;
            }
            SetBtnState();
        }
        private void SetBtnState()
        {
            if (Convert.ToInt32(this.lblCurrentInfo.Text) >= Convert.ToInt32(this.lblCount.Text) && Convert.ToInt32(this.lblCurrentInfo.Text) <= 1)
            {
                this.lbtnPrev.Enabled = false;
                this.lbtnNext.Enabled = false;
                this.lbtnFirst.Enabled = false;
                this.lbtnLast.Enabled = false;
            }
            else if (Convert.ToInt32(this.lblCurrentInfo.Text) >= Convert.ToInt32(this.lblCount.Text))
            {
                this.lbtnPrev.Enabled = true;
                this.lbtnNext.Enabled = false;
                this.lbtnFirst.Enabled = true;
                this.lbtnLast.Enabled = false;
            }
            else if (Convert.ToInt32(this.lblCurrentInfo.Text) <= 1)
            {
                this.lbtnPrev.Enabled = false;
                this.lbtnNext.Enabled = true;
                this.lbtnFirst.Enabled = false;
                this.lbtnLast.Enabled = true;
            }
            else
            {
                this.lbtnPrev.Enabled = true;
                this.lbtnNext.Enabled = true;
                this.lbtnFirst.Enabled = true;
                this.lbtnLast.Enabled = true;
            }
        }
        #endregion
    
        /// <summary>
        /// 获取数据绑定GridView
        /// </summary>
        private void BindGV()
        {
            int lower, upper;
            int currentPage = Convert.ToInt32(lblCurrentInfo.Text.Trim());
            lower = (currentPage - 1) * PageSize;
            upper = lower + PageSize;
    
            DataTable dt = new DataTable();
            sql = "";
            sql += "select top " + PageSize.ToString() + " * from (" + Sql + FilterString +  ") as a ";
            if (lower > 0)
            {
                sql += " where " + PrimaryKey + " not in (select top " + lower.ToString() + " " + PrimaryKey + " from (" + Sql + FilterString + ") as b)";
            }
            sql += ""+OrderBy+"";
            comm.CommandText = sql;
            comm.Connection = conn;
           // OleDbDataAdapter da = new OleDbDataAdapter(comm);
            SqlDataAdapter da = new SqlDataAdapter(comm);
            conn.Open();
            da.Fill(dt);
            conn.Close();
    
            if (dt.Rows.Count == 0)
            {
                this.Visible = false;
            }
            else
            {
                this.Visible = true;
            }
            GridView gv = (GridView)Page.FindControl(gvID);
            gv.DataSource = dt;
            gv.DataBind();
            SetBtnState();
        }
    
     
    }
    View Code

    页面引用:

    <%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>

    gridview下面

      <uc1:WebUserControl ID="WebUserControl1" runat="server" />

    页面后台:

    绑定
                string sql = "select * from employee";
                WebUserControl1.gvID = GridView1.ClientID;
                WebUserControl1.Sql = sql;
                WebUserControl1.OrderBy = "order by emplID ";
                WebUserControl1.PrimaryKey = "emplID";
                WebUserControl1.BindGridView();       

  • 相关阅读:
    从数据库表中查询日期最新的记录
    ArcGIS js api开发环境配置
    HRESULT:0x80070057 (E_INVALIDARG)
    ArcGIS js api三种查询功能
    sql设置字段默认值
    文件后缀与mime类型对应表
    关于dojo自定义类
    android用户登录验证
    java实现QQ互联登录
    springboot实现网站微信扫码登录
  • 原文地址:https://www.cnblogs.com/zhaolijing910/p/3106368.html
Copyright © 2011-2022 走看看