C#分頁插件 Webdiyer


Repeater沒有自帶的分頁功能,搜羅了一下發現AspNetPager.dll這個插件比較好用拿出來分享一下,老鳥勿噴

先來一張效果圖

該插件的好處在這里就不多說了,直接上代碼

(1)首先需要把AspNetPager.dll引用到項目中來

(2)Aspx代碼

ASPX代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="WebDiyer.Demo" %>

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<!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 id="Head1" runat="server">
    <title>分頁測試</title>
     <link href="Style/Pager.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
        function CgColor(type, obj) {
            if (type == "click") {
                for (var i = 1; i < document.getElementById("list").rows.length; i++) {
                    document.getElementById("list").rows[i].style.backgroundColor = "";
                    document.getElementById("list").rows[i].tag = false;
                }
                obj.style.backgroundColor = "#E1E9FD";
                obj.tag = true;
            }
            else if (type == "over") {
                if (!obj.tag) {
                    obj.style.backgroundColor = "#EEF2FB";
                }
            }
            else if (type == "out") {
                if (!obj.tag) {
                    obj.style.backgroundColor = "";
                }
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div style="border: 1px solid #CCC; padding: 5px; margin-top: 5px; margin-bottom: 5px;">
                    Order ID:<asp:DropDownList ID="DropDownList1" runat="server">
                        <asp:ListItem>&gt;=</asp:ListItem>
                        <asp:ListItem>&lt;=</asp:ListItem>
                        <asp:ListItem>=</asp:ListItem>
                    </asp:DropDownList>
                    <asp:TextBox ID="tb_orderid" runat="server" Width="90px"></asp:TextBox>
                    <asp:Button ID="btn_search" runat="server" OnClick="btn_search_Click" Text="Search" />
                    <asp:Button ID="btn_all" runat="server" OnClick="btn_all_Click" Text="Show All" Enabled="false" />
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tb_orderid"
                        Display="Dynamic" ErrorMessage="RequiredFieldValidator">必需</asp:RequiredFieldValidator>&nbsp;
                    <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="tb_orderid"
                        Display="Dynamic" ErrorMessage="CompareValidator" Operator="DataTypeCheck" SetFocusOnError="True"
                        Type="Integer">必須是整數</asp:CompareValidator>
                </div>
                <div style="height:450px">
                <asp:Repeater ID="rpRuleList" runat="server">
                    <HeaderTemplate>
                        <table width="100%" border="1" cellspacing="0" cellpadding="4" style="border-collapse: collapse"
                            id="list">
                            <tr>
                                <th style="width: 5%">
                                    序號
                                </th>
                                <th style="width: 10%">
                                    訂單編號
                                </th>
                                <th style="width: 15%">
                                    訂單日期
                                </th>
                                <th style="width: 30%">
                                    公司名稱
                                </th>
                                <th style="width: 20%">
                                    客戶編號
                                </th>
                                <th style="width: 20%">
                                    雇員姓名
                                </th>
                            </tr>

                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr onmouseover="CgColor('over',this)" onmouseout="CgColor('out',this)" onclick="CgColor('click',this)">
                            <td>
                                <%#Eval("rowNumber")%>
                            </td>
                            <td>
                                <%#Eval("orderid")%>
                            </td>
                            <td>
                                <%#Eval("orderdate","{0:d}")%>
                            </td>
                            <td>
                                <%#Eval("companyname")%>
                            </td>
                            <td>
                                <%#Eval("customerid")%>
                            </td>
                            <td>
                                <%#Eval("employeename")%>
                            </td>
                        </tr>
                        
                    </ItemTemplate>
                    <FooterTemplate>
                        </table>
                    </FooterTemplate>
                    
                </asp:Repeater>
                </div>
                
                <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="15" 
                    OnPageChanged="AspNetPager1_PageChanged"  CssClass="cssPager"
                    FirstPageText="首頁" LastPageText="尾頁" PrevPageText="上頁"
                    NextPageText="下頁" HorizontalAlign="left" >
                </webdiyer:AspNetPager>

            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>

 

(3)CS代碼

CS代碼
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace WebDiyer
{
    public partial class Demo : System.Web.UI.Page
    {
        #region
        string count;//用於記錄記錄集條數
        const string vsKey = " "; //ViewState key
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                searchOrders(string.Empty);
            }
        }

        protected void btn_search_Click(object sender, EventArgs e)
        {
            AspNetPager1.CurrentPageIndex = 1;
            btn_all.Enabled = true;
            string s = "  orderid " + DropDownList1.SelectedValue + tb_orderid.Text;
            ViewState[vsKey] = s;
            searchOrders(s);
        }

        void searchOrders(string sWhere)
        {
            string pageIndex = (AspNetPager1.CurrentPageIndex ).ToString();//當前頁碼
            DataTable dt = Common.DB.GetPage("V_Orders", "orderid,orderdate,customerid,CompanyName,EmployeeName ", pageIndex, sWhere, "orderid desc", "15", out count);
            AspNetPager1.RecordCount =Convert.ToInt32(count);
            rpRuleList.DataSource = dt;
            rpRuleList.DataBind();
        }

        protected void AspNetPager1_PageChanged(object src, EventArgs e)
        {
            searchOrders((string)ViewState[vsKey]);
        }
        protected void btn_all_Click(object sender, EventArgs e)
        {
            ViewState[vsKey] = null;
            btn_all.Enabled = false;
            AspNetPager1.CurrentPageIndex = 1;
            searchOrders(null);
        }
        #endregion
    }
    

}

 

(4)涉及到的存儲過程

涉及到的分頁存儲過程
ALTER  procedure [dbo].[GetPage]
    @tblName      varchar(1000),       -- 表名(必要參數)
    @Fields      varchar(1000)='*',      --要返回的列,要保證沒有名稱的列有別名
    @PageSize     int = 25,           -- 頁尺寸
    @PageIndex    int = 1,            -- 頁碼
    @OrderType    varchar(50) = '',    -- 設置排序類型,不要加order by 
    @strWhere     varchar(2000) = ''  -- 查詢條件 (注意: 不要加 where)
as 
BEGIN
    declare @Mycount varchar(2000)---此變量存儲SQL語句,用於獲得符合條件的記錄總數
    declare @strSql varchar(2000)----此變量存儲SQL語句,用於獲得符合條件的記錄
    if @OrderType=''
    set @OrderType='getdate()'

    if(@strWhere='')
    begin
        set @Mycount='select count(*) from '+@tblName
        set @strsql='select * from (select top ('+cast(@PageSize*@PageIndex as varchar(10))+') ROW_NUMBER()over(order by '+@OrderType+') rowNumber,'+@Fields+' from '+@tblName+')  t where rowNumber>'+cast((@PageIndex-1)*@PageSize as varchar(10))
    end
    else
    begin
        set @Mycount='select count(*) from '+@tblName+' where '+@strWhere
        set @strsql='select * from (select top ('+cast(@PageSize*@PageIndex as varchar(10))+') ROW_NUMBER()over(order by '+@OrderType+') rowNumber,'+@Fields+' from '+@tblName+' where '+@strWhere+')  t where rowNumber>'+cast((@PageIndex-1)*@PageSize as varchar(10))
    end  
        exec(@strSql)
        exec(@Mycount)
END

 

到此一個基本的分頁功能就完成了

 需要源碼的猛戳這里 http://files.cnblogs.com/justconnor/WebDiyer.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM