• ASP.NET


    效果:

    SQL-存储过程(Paging):

    •  ROW_NUMBER() over(order by MessageDateTime desc)  其中的 MessageDateTime desc 代表的是按照时间,倒序排列。
    USE [DB_Message]
    GO
    /****** Object:  StoredProcedure [dbo].[Paging]    Script Date: 2015/9/3 11:53:09 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		HF_Ultrastrong
    -- Create date: 2015-8-28 19:31:59
    -- Description:	分页
    -- =============================================
    ALTER PROCEDURE [dbo].[Paging]
    	@DisplayCountPage int,
    	@CurrentPage int
    AS
    BEGIN
        declare @StartPage int
        declare @EndPage int
        set @StartPage=(@CurrentPage-1)*@DisplayCountPage
        set @EndPage=@CurrentPage*@DisplayCountPage
        select * from
        (select ROW_NUMBER() over(order by MessageDateTime desc) as rownum, MessageID, MessageName, MessageIP, MessageContent, MessageDateTime, MessageHeadImage from Tb_Message) as a
        where a.rownum > @StartPage and a.rownum <= @EndPage
    END
    

      

      

    前端代码:

    <body>
        <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <th>ID</th>
                    <th>Name</th>
                    <th>Score</th>
                </tr>
                <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <tr>
                    <td>
                        <%#Eval("ID") %>
                    </td>
                    <td>
                        <%#Eval("Name") %>
                    </td>
                    <td>
                       <%#Eval("Score") %>
                    </td>
                </tr>
                </ItemTemplate>
            </asp:Repeater>
            </table>
            <asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink>
        </div>
        </form>
    </body>
    

      

    后端代码:

        protected void Page_Load(object sender, EventArgs e)
        {
            // 当前页,默认加载时,当前页为1
            int CurrentPage = 1;
    
            // 每一页显示数据量
            int DisplayCountPage = 5;
    
            // 总记录数
            int TotalPage = Convert.ToInt32(SQLHelper.ExcuteScalar("select Count(*) from Tb_Message", CommandType.Text));
    
            if (TotalPage < DisplayCountPage)
            {
                this.HyperLink1.Visible = false;
            }
    
            //判断是否传递参数
            if (Request.QueryString["page"] != null)
            {
                if ((!IsNumber(Request.QueryString["page"].ToString())) || Convert.ToInt32(Request.QueryString["page"].ToString()) > TotalPage)
                {
                    Response.Write("<script>alert('页码不正确!');history.back()</script>");
                }
                else
                {
                    CurrentPage = Convert.ToInt32(Request.QueryString["page"].ToString());
                }
            }
    
            //参数化数据
            SqlParameter[] paras = new SqlParameter[]
                {
                    new SqlParameter("@DisplayCountPage", DisplayCountPage),
                    new SqlParameter("@CurrentPage", CurrentPage),
                };
    
            //绑定数据
            this.Repeater1.DataSource = SQLHelper.ExecuteTable("Paging", paras, CommandType.StoredProcedure);
            this.Repeater1.DataBind();
    
            //显示上下页按钮
            this.HyperLink1.Text = get_pagenation(DisplayCountPage, TotalPage, CurrentPage, "Message.aspx?page={0}", "_top");
        }
    
        //==========================================分页类=======================================//
        #region 分页内容
        /// <summary>
        /// 分页内容
        /// </summary>
        /// <param name="size">页面大小</param>
        /// <param name="count">页面数量</param>
        /// <param name="currendIndex">当前页</param>
        /// <param name="pattern">url模式:demo.aspx?page={0}</param>
        /// <param name="target">窗口模式</param>
        /// <returns></returns>
        public static string get_pagenation(int size, int count, int currendIndex, string pattern, string target)
        {
            //1>打开窗口目标
            target = string.IsNullOrEmpty(target) ? "_top" : target;
            //2>总页数
            int pageCount = count / size;
            pageCount = pageCount * size == count ? pageCount : pageCount + 1;
            //3>分页内容
            StringBuilder strHtml = new StringBuilder();
            strHtml.Append("<span class='pagenation'>");
    
            #region 首部处理
            if (currendIndex > 1)
            {
                strHtml.AppendFormat("<a href='Message.aspx?page=1' target='{0}'>[首页]</a>", target);
                strHtml.AppendFormat("<a href='{0}' target='{1}'>[上一页]</a>", string.Format(pattern, currendIndex - 1), target);
            }
            else
            {
                strHtml.Append("<span class='disabled'>[首页]</span>  <span class='disabled'>[上一页]</span>");
            }
            #endregion
    
            #region 中间部分
            int i = 1;
    
            int right = (currendIndex + 4) > pageCount ? pageCount : currendIndex + 4;
            if (currendIndex > 6)
            {
                i = currendIndex - 5;
            }
            else
            {
                right = pageCount >= 10 ? 10 : pageCount;
            }
            for (; i <= right; i++)
            {
                if (i == currendIndex)
                {
                    strHtml.AppendFormat("<font class='current'>{0}</font>", i);
                    strHtml.AppendLine();
                    continue;
                }
                strHtml.AppendFormat("<a href='{0}' target='{1}'>[{2}]</a>", string.Format(pattern, i), target, i);
                strHtml.AppendLine();
            }
            #endregion
    
            #region 尾部处理
            if (currendIndex == pageCount)
            {
                strHtml.Append("<span class='disabled'>[下一页]</span><span class='disabled'>[末页]</span>");
                strHtml.AppendFormat("总共({0})页", pageCount);
            }
            else
            {
                strHtml.AppendFormat("<a href='{0}' target='{1}'>[下一页]</a>", string.Format(pattern, currendIndex + 1), target);
                strHtml.AppendFormat("<a href='{0}' target='{1}'>[末页]</a>", string.Format(pattern, pageCount), target);
                strHtml.AppendFormat("  <label>总共({0})页</label>", pageCount);
            }
            #endregion
    
            strHtml.Append("</span>");
    
            return strHtml.ToString();
        }
        #endregion
        //======================================================================================//
    
        #region 判断是否为数字
        /// <summary>
        /// 判断是否为数字
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public bool IsNumber(string value)
        {
            Regex r = new Regex(@"^d+(.)?d*$");
            if (r.IsMatch(value))
                return true;
            else
                return false;
        }
        #endregion
    

      

      

    ================================================================================

    最终效果:

    前端代码:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Manager/Manager.Master" AutoEventWireup="true" CodeBehind="DisplayBookInfo.aspx.cs" Inherits="Shop.Manager.WebForm4" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    
        <div class="config-items">
            <div class="config-title">
                <h1><i class="icon-font">�</i>添加图书分类</h1>
            </div>
            <div class="result-content">
                <table class="result-tab" style=" 100%">
                    <tr>
                        <th>图书编号</th>
                        <th>图书名称</th>
                        <th>作者名称</th>
                        <th>出版社</th>
                        <th>出版时间</th>
                        <th>ISBN</th>
                        <th>操作</th>
                    </tr>
                    <asp:Repeater ID="Repeater1" runat="server">
                        <ItemTemplate>
                            <tr>
                                <td>
                                    <a><%#Eval("BookID")%></a>
                                </td>
                                <td>
                                    <a><%#Eval("BookName")%></a>
                                </td>
                                <td>
                                    <a><%#Eval("AuthorName")%></a>
                                </td>
                                <td>
                                    <a><%#Eval("Publishing")%></a>
                                </td>
                                <td>
                                    <a><%#Eval("PublishingTime")%></a>
                                </td>
                                <td>
                                    <a><%#Eval("ISBN")%></a>
                                </td>
                                <td>
                                    <a href="../Manager/BookDetaileInfoAndUpdate.aspx?id=<%#Eval("BookID")%>&Is=true">详细信息</a>
                                    <a href="../Manager/BookDetaileInfoAndUpdate.aspx?id=<%#Eval("BookID")%>&Is=false">| 修改</a>
                                    <asp:LinkButton ID="LnkDeleteCategory" runat="server" CssClass="link-del" CommandArgument='<%#Eval("BookID")%>' OnClientClick="return confirm('确定要删除吗?')" OnClick="LnkDeleteCategory_Click">| 删除</asp:LinkButton>
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                </table>
    
                <div class="list-page">
                    <!--分页-->
                    <asp:LinkButton ID="FirstPage" runat="server" OnClick="FirstPage_Click">首页</asp:LinkButton>
                    <asp:LinkButton ID="PreviousPage" runat="server" OnClick="PreviousPage_Click">上一页</asp:LinkButton>
                    <asp:Label ID="CurrentPage" runat="server" Text="Label">1</asp:Label>
                     /
                    <asp:Label ID="TotalPage" runat="server" Text="Label">0</asp:Label>页
                    <asp:LinkButton ID="NextPage" runat="server" OnClick="NextPage_Click">下一页</asp:LinkButton>
                    <asp:LinkButton ID="EndPage" runat="server" OnClick="EndPage_Click">尾页</asp:LinkButton>
                </div>
            </div>
        </div>
    </asp:Content>
    

      

    后台代码:

    using System;
    using System.Web.UI.WebControls;
    using BLL;
    using Tools;
    
    namespace Shop.Manager
    {
        public partial class WebForm4 : System.Web.UI.Page
        {
            BookInfoBLL bookinfobll = new BookInfoBLL();
            AlbumBLL albumbll = new AlbumBLL();
    
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //绑定图书信息
                    DisplayTotalPages();//显示总计多少页
                    Show();//初始化显示第一页,默认当前为第一页
                    State();//初始化导航按钮的使用状态
                }
            }
    
            #region 分页
    
            /// <summary>
            /// 按照哪一个字段进行排序(在进行查询记录时)
            /// </summary>
            public string OderbyField = "BookID";
    
            /// <summary>
            /// 查询字段(中间以逗号隔开,开头不加逗号,末尾不加逗号)
            /// </summary>
            public string QueryField = "[BookID],[BookName],[AuthorName],[Publishing],[PublishingTime],[ISBN]";
    
            /// <summary>
            /// 表名
            /// </summary>
            public string TableName = "Tb_BookInfo";
    
            /// <summary>
            /// 每一页显示数据量
            /// </summary>
            public int CountPage = 5;
    
            /// <summary>
            /// 首页
            /// </summary>
            protected void FirstPage_Click(object sender, EventArgs e)
            {
                this.CurrentPage.Text = "1";
                Show();
                State();
            }
    
            /// <summary>
            /// 上一页
            /// </summary>
            protected void PreviousPage_Click(object sender, EventArgs e)
            {
                this.CurrentPage.Text = (Convert.ToInt32(this.CurrentPage.Text) - 1).ToString();
                Show();
                State();
            }
    
            /// <summary>
            /// 下一页
            /// </summary>
            protected void NextPage_Click(object sender, EventArgs e)
            {
                this.CurrentPage.Text = (Convert.ToInt32(this.CurrentPage.Text) + 1).ToString();
                Show();
                State();
            }
    
            /// <summary>
            /// 尾页
            /// </summary>
            protected void EndPage_Click(object sender, EventArgs e)
            {
                this.CurrentPage.Text = this.TotalPage.Text;
                Show();
                State();
            }
    
            /// <summary>
            /// 显示总计多少页
            /// </summary>
            public void DisplayTotalPages()
            {
                string text = "select count(*) from " + TableName + "";
    
                int page = Convert.ToInt32(SelectDataSource.ExcuteScalar(text));//获取总条数
    
                this.TotalPage.Text = (Math.Ceiling(((page * 1.0 / CountPage)))).ToString();
            }
    
            /// <summary>
            /// 状态设置
            /// </summary>
            public void State()
            {
                if (this.CurrentPage.Text == "1")//如果当前页为第一页,则前一页和首页按钮禁用
                {
                    this.FirstPage.Enabled = false;
                    this.PreviousPage.Enabled = false;
                    this.EndPage.Enabled = true;
                    this.NextPage.Enabled = true;
                }
                if (this.CurrentPage.Text == this.TotalPage.Text)//如果当前页码等于总页码,则后一页和尾页按钮禁用
                {
                    this.FirstPage.Enabled = true;
                    this.PreviousPage.Enabled = true;
                    this.EndPage.Enabled = false;
                    this.NextPage.Enabled = false;
                }
                if (this.CurrentPage.Text == "1" && this.TotalPage.Text == "1")//当前页码与总页码都等于1时,(记录数小于要显示的条数)
                {
                    this.FirstPage.Enabled = false;
                    this.PreviousPage.Enabled = false;
                    this.EndPage.Enabled = false;
                    this.NextPage.Enabled = false;
                }
                if (Convert.ToInt32(this.CurrentPage.Text) > 1 && Convert.ToInt32(this.CurrentPage.Text) < Convert.ToInt32(this.TotalPage.Text))//如果当前也在首页和尾页之间则四个按钮均可用
                {
                    this.FirstPage.Enabled = true;
                    this.PreviousPage.Enabled = true;
                    this.EndPage.Enabled = true;
                    this.NextPage.Enabled = true;
                }
            }
    
            /// <summary>
            /// 显示数据,绑定数据
            /// </summary>
            public void Show()
            {
                string sql = @"select * from (select ROW_NUMBER() over(order by " + OderbyField + ") as rownum,  " + QueryField + "  from " + TableName + ") as a where a.rownum > '" + (Convert.ToInt32(this.CurrentPage.Text) - 1) * CountPage + "' and a.rownum <='" + Convert.ToInt32(this.CurrentPage.Text) * CountPage + "' order by a.rownum ASC";
    
                //根据上面的sql语句给定Repeater控件数据源
                this.Repeater1.DataSource = SelectDataSource.DataSource(sql);
                this.Repeater1.DataBind();
            }
    
            #endregion
        }
    }
  • 相关阅读:
    蓝绿发布、灰度发布和滚动发布
    linux redis 设置密码:
    redis配置文件讲解
    17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
    CentOS 7下安装Redis
    压力测试工具介绍
    【k8s部署kong一】kong k8s 安装 以及可视化管理界面
    Jmeter连接ORACLE数据库
    Jenkins安装插件提示实例似乎已离线问题解决办法
    Fiddler增加显示请求响应时间列
  • 原文地址:https://www.cnblogs.com/KTblog/p/4754527.html
Copyright © 2020-2023  润新知