zoukankan      html  css  js  c++  java
  • cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等

    asp.net分页是最最常用的功能,实现方式也很多,使用不同的控件有不同的分页方式。

    下面分享一个我们团队内部使用了多年的一个分页控件cPage,是自己设计编写,没有冗余,简单、快速。

    cPage,现在版本是3.2了,很简单的一个分页功能,可以到这里【下载】。最好是下载这个demo

    cPage是asp.net分页控件,也可以叫做分页组件,更确切的应该叫做分页模块,也或者叫做分页通用代码。

    cPage,使用url传值实现分页,支持多种asp.net数据控件,如datalist、gridview、Repeater等,支持多种数据源,如SQL Server、Oracle、mysql、DB2等,说的白一点就是能够生成datatable的就可以。

    支持url重写(UrlRewrite)分页,比如,常用url分页“info.aspx?p=[#p#]”,url重写“info_[#p#].html”,url中页码是通过“[#p#]”传递的,所以支持任何形式的分页,更多详细请查阅demo。

    先来一张效果图:

    cPage分装了dll,名称为“cPage.dll”,更重要的是要使用,所以demo很重要。下面是demo的代码:

    demo使用了sqlserver2008r2数据库,IDE是vs2010。

    demo分页效果图:

    sql代码:

    CREATE TABLE [info](
    	[ID] [int] IDENTITY(1,1) NOT NULL,
    	[name] [nvarchar](50) NULL,
    	[card] [nvarchar](50) NOT NULL,
    	[createtime] [datetime] NULL)
    

    demo的页面,cPageList.aspx,代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="cPageList.aspx.cs" Inherits="cPageList" %>
    
    <!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>
        <style type="text/css">    
        body ,html { font-size:12px;}
        a,table,td,div{font-size:12px; }
        
        a:link {text-decoration: none;}
        a:visited {text-decoration: none;}
        a:hover { text-decoration: none;}
        a:active {text-decoration: none;}
        
        /*-----------------------------------cPage分页css(v3.2)----------------------------------------------*/
        .pagenum{  padding:2px 6px 2px 6px; margin: 0 0 0 4px; text-align:center; border:1px solid #79b7e7;display:inline-block;}
        .pagenum:hover{border:1px solid #f5d37c; background-color:#fdf4de ; text-decoration:none; }
        .pagecur{background-color:#fdf4de; padding:2px 6px 2px 6px; margin: 0 0 0 4px; text-align:center; font-weight:bold; border:1px solid #f5d37c;display:inline-block;}
        .pagecur:hover{border:1px solid #f5d37c; background-color:#fdf4de ; text-decoration:none; }
        .pagecolor{color:#3f3f3f;}
        .pagecolorc{color:#FF6600;font-weight: bold;}
        /*-----------------------------------cPage分页css(v3.2)----------------------------------------------*/
        </style>
        <script language="javascript" type="text/javascript">
            // 鼠标经过改变行的颜色(begin) 
            if (!objbeforeItem) {
                var objbeforeItem = null;
                var objbeforeItembackgroundColor = null;
            }
            function ItemOver(obj) {
    
                objbeforeItembackgroundColor = obj.style.backgroundColor;
                objbeforeItem = obj;
                obj.style.backgroundColor = "#DDF0FF";
            }
            function ItemOut(obj) {
                if (objbeforeItem) {
                    objbeforeItem.style.backgroundColor = objbeforeItembackgroundColor;
                }
            }
            // 鼠标经过改变行的颜色(end)
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <table width="630" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse;"
                bordercolor="#eaeaea">
                <tr style="text-align: center; height: 30px; font-weight: bold;">
                    <td>
                        姓名
                    </td>
                    <td>
                        身份证号
                    </td>
                    <td>
                        建立时间
                    </td>
                    <td width="130">
                        操作
                    </td>
                </tr>
                <asp:Repeater ID="cPage_repeaterList" runat="server" OnItemCommand="cPage_repeaterList_ItemCommand"
                    OnItemDataBound="cPage_repeaterList_ItemDataBound">
                    <ItemTemplate>
                        <tr style="height: 28px; <%# Container.ItemIndex % 2 == 1 ? "background-color:#F7F6F3": ""%>"
                            onmouseover="ItemOver(this)" onmouseout="ItemOut(this)">
                            <td style="padding: 0 0 0 5px">
                                <%# Eval("name")%>
                            </td>
                            <td style="text-align: center;">
                                <%# Eval("card")%>
                            </td>
                            <td style="text-align: center;">
                                <%# Eval("createtime", "{0:yyyy-MM-dd HH:mm:ss}")%>
                            </td>
                            <td style="text-align: center;">
                                <asp:HiddenField ID="hfID" Value='<%#Eval("ID") %>' runat="server" />
                                <a href="userop.aspx?act=up&id=<%# Eval("ID")%>&p=<%=p %>" style="color: Red">【修改】</a>
                                <asp:LinkButton ID="lnkbtnDel" CommandName="del" CommandArgument='<%# Eval("id")%>'
                                    Style="color: Red" runat="server">【删除】</asp:LinkButton>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
            </table>
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td style="text-align: left; height: 50px">
                        <asp:Label ID="lblpage" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
        </div>
        </form>
    </body>
    </html>

    cPageList.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.Text.RegularExpressions;
    
    using System.Data;
    using System.Configuration;
    using System.Data.SqlClient;
    
    using cPage;
    
    public partial class cPageList : System.Web.UI.Page
    {
        public int p = 1;   //页码
    
        protected void Page_Load(object sender, EventArgs e)
        {
            #region 分页获得页码
            string _p = Request.QueryString["p"];
    
            if (string.IsNullOrEmpty(_p))
                _p = "1";
    
            if (IsIntType(_p))
            {
                p = Convert.ToInt32(_p);
            }
            else
            {
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "cPageScript", "<script language="javascript" type="text/javascript">alert("页码不正确");history.back();</script>", true);
                return;
            }
            #endregion
    
    
            if (!Page.IsPostBack)
            {
                cPageBind();
            }
        }
    
        protected void cPageBind()
        {
            string _url = Request.FilePath + "?p=[#p#]";
            int _pageNum = 8;           // 中间页码数量
            int _pageSize = 10;         // 每页记录数
            int _beginIndex = 0;        // 开始记录
            int _endIndex = 0;          // 结束记录
    
    
            string sqlc = "select count(ID) from info";
            string sqlorder = "order by ID desc";
            string sqltable = "info";
    
    
            DataTable DTc = GetDt(sqlc);
    
            lblpage.Text = mPage.getPage(Convert.ToInt32(DTc.Rows[0][0].ToString()), _pageSize, _pageNum, p, out _beginIndex, out _endIndex, _url);
    
            //sql server 分页代码(sql server 2005后版本可用)
            string sql = "";
    
            sql = "WITH NoPagedTable AS (" +
                "SELECT ROW_NUMBER() OVER (" + sqlorder + ") AS rowIndex, " +
                " * " +
                " FROM " + sqltable + " " +
                ")select * from NoPagedTable WHERE rowIndex>=" + _beginIndex + " and rowIndex<=" + _endIndex;
            //
    
            DataTable DT = GetDt(sql);
    
            cPage_repeaterList.DataSource = DT;
            cPage_repeaterList.DataBind();
    
        }
    
        protected void cPage_repeaterList_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemIndex > -1)
            {
                ((LinkButton)e.Item.FindControl("lnkbtnDel")).Attributes["onclick"] = "return confirm('确认要删除吗?');";
            }
        }
    
        protected void cPage_repeaterList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "del")
            {
                try
                {
                    long _ID = Convert.ToInt64(((HiddenField)(e.Item.FindControl("hfID"))).Value);
    
                    string sql = "";
    
                    sql = "delete info where ID=" + _ID;
    
    
                    int flag = runSQL(sql);
    
                    if (flag == 1)
                    {
                        cPageBind();
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "cPageScript", "<script language="javascript" type="text/javascript">alert("删除失败");history.back();</script>", true);
                
                    }
    
                }
                catch
                {
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "cPageScript", "<script language="javascript" type="text/javascript">alert("数据格式不正确(异常)");history.back();</script>", true);
                
                }
            }
        }
    
        /// <summary>
        /// 数据库操作,执行sql语句
        /// </summary>
        /// <param name="inSQL"></param>
        /// <returns></returns>
        public int runSQL(string inSQL)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
            SqlCommand sqlCmd = new SqlCommand(inSQL, conn);
    
            try
            {
                conn.Open();
                sqlCmd.CommandTimeout = 600;
                sqlCmd.ExecuteNonQuery();
                return 1;
            }
            catch
            {
                return 0;
            }
            finally
            {
                sqlCmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
        
        /// <summary>
        /// 数据库操作,根据sql获取DataTable
        /// </summary>
        /// <param name="inSQL"></param>
        /// <returns></returns>
        public DataTable GetDt(string inSQL)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
            SqlDataAdapter sqlDA = new SqlDataAdapter(inSQL, conn);
            DataTable outDt = new DataTable();
    
            conn.Open();
            sqlDA.SelectCommand.CommandTimeout = 600;
            sqlDA.Fill(outDt);
    
            sqlDA.Dispose();
            conn.Close();
            conn.Dispose();
    
            return outDt;
    
        }
    
        /// <summary>
        /// 判断是否是正整数
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static bool IsIntType(string text)
        {
            Regex reg = new Regex("^[0-9]+$");
            Match ma = reg.Match(text);
            if (ma.Success)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    
    }
    

      

    这里【下载】。最好是下载这个demo

    也可以在这里下载:【cPage】    【cPage-demo】


    版权所有,bubufx,禁止转载!

  • 相关阅读:
    超级干货;Python优化之使用pandas读取和训练千万级数据
    「git」mac下git提交github代码
    「Linux+Django」uwsgi服务启动(start)停止(stop)重新装载(reload)
    「Linux+Django」Django+CentOs7+uwsgi+nginx部署网站记录
    「Linux」centos7安装mysql
    「Linux」centos7安装使用rar
    「Linux」centos7安装uWSGI
    「Linux」centos7更新python3.6后yum报错问题
    「Linux」centos7安装python
    「Linux」VMware安装centos7(一)
  • 原文地址:https://www.cnblogs.com/weekzero/p/3479642.html
Copyright © 2011-2022 走看看