• 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=" 5%">
                                        序号
                                    </th>
                                    <th style=" 10%">
                                        订单编号
                                    </th>
                                    <th style=" 15%">
                                        订单日期
                                    </th>
                                    <th style=" 30%">
                                        公司名称
                                    </th>
                                    <th style=" 20%">
                                        客户编号
                                    </th>
                                    <th style=" 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

    到此一个基本的分页功能就完成了

     需要源码的猛戳这里 https://files.cnblogs.com/justconnor/WebDiyer.rar

  • 相关阅读:
    读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第三部分)
    Spring Boot进阶系列一
    职场进阶之七种武器
    大龄IT程序员的救赎之道
    Web Service
    生产者消费者问题
    SpringBoot集成Apache Shiro
    简单模拟医院叫号系统
    IT小团队管理者的突围之道
    内部推荐
  • 原文地址:https://www.cnblogs.com/justconnor/p/2580179.html
Copyright © 2020-2023  润新知