cPage分頁,asp.net自定義分頁,url傳值分頁,支持datalist、gridview、Repeater等

asp.net分頁是最最經常使用的功能,實現方式也不少,使用不一樣的控件有不一樣的分頁方式。javascript

下面分享一個咱們團隊內部使用了多年的一個分頁控件cPage,是本身設計編寫,沒有冗餘,簡單、快速。css

cPage,如今版本是3.2了,很簡單的一個分頁功能,能夠到這裏【下載】。最好是下載這個demohtml

cPage是asp.net分頁控件,也能夠叫作分頁組件,更確切的應該叫作分頁模塊,也或者叫作分頁通用代碼。java

cPage,使用url傳值實現分頁,支持多種asp.net數據控件,如datalist、gridview、Repeater等,支持多種數據源,如SQL Server、Oracle、mysql、DB2等,說的白一點就是可以生成datatable的就能夠。mysql

支持url重寫(UrlRewrite)分頁,好比,經常使用url分頁「info.aspx?p=[#p#]」,url重寫「info_[#p#].html」,url中頁碼是經過「[#p#]」傳遞的,因此支持任何形式的分頁,更多詳細請查閱demo。sql

先來一張效果圖:數據庫

cPage分裝了dll,名稱爲「cPage.dll」,更重要的是要使用,因此demo很重要。下面是demo的代碼:asp.net

demo使用了sqlserver2008r2數據庫,IDE是vs2010。sqlserver

demo分頁效果圖:this

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,禁止轉載!

相關文章
相關標籤/搜索