PagerManager------分页管理器(ASP.NET C#)

效果图如下:

 

<PagerManagerDoc>
  <Class name="PagerManager">
    <summary>
      用于ASP.NET Web应用程序中对数据进行分页的的服务器控件。
    </summary>
    <remarks>
      不同于DataGrid或GridView等带分页功能的数据绑定控件,PagerManager分页控件本身并不显示任何数据,而只显示分页导航元素,数据在页面上的显示方式与该控件无关。PagerManager分页控件可以为GridView、DataGrid、DataList、Repeater以及自定义的数据绑定控件进行分页。PagerManager不仅仅是一个分页控件,它还可以实现如图片浏览等程序中的前一页后一页等导航功能。
      <p>PagerManager控件的分页方法和GridView非常相似,但PagerManager的分页功能更为灵活、强大。PagerManager分页控件不仅仅支持默认的PostBack方式分页,它还支持通过Url来实现分页以及Url重写功能,这使得访问者可以直接输入相应的Url来访问任何页面,并且搜索引擎也可以直接检索每个页面,若使用DataGrid或GridView等.net框架自带的数据绑定控件的分页功能,这些是无法实现的。</p><p>
        要使用 PagerManager 分页控件,必须最少指定它的 <see cref="RecordCount" /> 属性的值,另外如果需要,指定并编写 <see cref="PageChanging"/> 或 <see cref="PageChanged" /> 事件的处理程序,可以在PageChanging事件处理程序中取消分页事件,在PageChanged事件处理程序中绑定数据或实现自定义的数据呈现逻辑。
        <see cref="RecordCount" /> 属性指定要分页的所有数据的总项数,若未指定该值或该值小于等于 <see cref="PageSize" /> ,即要分页的数据只有一页,则PagerManager控件默认会自动隐藏而不显示任何内容,若需在只有一页数据的情况下显示PagerManager分页控件,可以将它的AlwaysShow属性设为true即可。
       </p></remarks>
    <example>
      以下示例说明如何用PagerManager对Repeater进行分页。
      <code>
        <![CDATA[
    protected void Page_Load(object sender, EventArgs e)
    {
      
        if (!IsPostBack)
        {
            BindingData();    
        }

    }
  
     void BindingData()
    {
        SqlParameter[] SqlParam=new SqlParameter[7];
        SqlParam[0] = new SqlParameter("@TableName", "Capacitors");
        SqlParam[1] = new SqlParameter("@ReturnFields", "*");
        SqlParam[2] = new SqlParameter("@PageSize", PagerManager1.PageSize);
        SqlParam[3] = new SqlParameter("@PageIndex", PagerManager1.PageIndex);
        SqlParam[4] = new SqlParameter("@Where", SqlSearch);
        SqlParam[5] = new SqlParameter("@Orderfld", "PriceNo");
        SqlParam[6] = new SqlParameter("@OrderType",2);

        using (SqlDataReader dr = SqlHelper.ExecuteReader(Const.ConnectString, CommandType.StoredProcedure, "[dbo].[PagerManager]", SqlParam))
        {
            if(dr.Read())
            {
                PagerManager1.RecordCount = Convert.ToInt32(dr[1]);
            
            }
          
           if(dr.NextResult())
           {
              
                Repeater1.DataSource = dr;
                Repeater1.DataBind();
           }
          
        }
    }

 

    protected void PagerManager1_PageChanged(object sender, EventArgs e)
    {
        BindingData();
    }
<HTML><HEAD>
<TITLE> PagerManager Samples </TITLE>
</HEAD>

<BODY>
<form runat="server">
          <div class="homeheadAT" >
          <div class="SearchResult">                                                                    
                                        <asp:Repeater ID="Repeater1" runat="server">
                                        <HeaderTemplate>
                                        <table  cellspacing="0" cellpadding="0" border="0">                                             
                                        </HeaderTemplate>
                                        <ItemTemplate>     
                                                 <tr class="trPicture" >
                                                       <td ><img  alt="查看详细资料" src="NoImage.bmp"  /></td>
                                                       <td >
                                                                 <span>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Name"))) == true ? "" : "<font color=#2965a5>名称:</font>" + Eval("Name") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("SizeCode"))) == true ? "" : "<font color=#2965a5>尺码:</font>" + Eval("SizeCode") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Capacitance"))) == true ? "" : "<font color=#2965a5>电容量:</font>" + Eval("Capacitance") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Tolerance"))) == true ? "" : "<font color=#2965a5>电容误差:</font>" + Eval("Tolerance") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("RatedVoltage"))) == true ? "" : "<font color=#2965a5>额定电压:</font>" + Eval("RatedVoltage") + " "%><br />
                                                                 </span>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("PriceNo"))) == true ? "" : "<font color=#2965a5>报价编号:</font>" + Eval("PriceNo") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("ProductId"))) == true ? "" : "<font color=#2965a5>产品编号:</font>" + Eval("ProductId") + " "%>                                                              
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Brand"))) == true ? "" : "<font color=#2965a5>品牌:</font>" + Eval("Brand") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Series"))) == true ? "" : "<font color=#2965a5>系列:</font>" + Eval("Series") + " "%>                                                               
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Length"))) == true ? "" : "<font color=#2965a5>元件长度(L):</font>" + Eval("Length") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Width"))) == true ? "" : "<font color=#2965a5>元件宽度(W):</font>" + Eval("Width") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Thickness"))) == true ? "" : "<font color=#2965a5>元件厚度(T):</font>" + Eval("Thickness") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("LeadSpace"))) == true ? "" : "<font color=#2965a5>引线间距:</font>" + Eval("LeadSpace") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("LeadDia"))) == true ? "" : "<font color=#2965a5>引线直经:</font>" + Eval("LeadDia") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("PinSpacing"))) == true ? "" : "<font color=#2965a5>针距:</font>" + Eval("PinSpacing") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("BodyDia"))) == true ? "" : "<font color=#2965a5>元件直经(D):</font>" + Eval("BodyDia") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Height"))) == true ? "" : "<font color=#2965a5>元件高度(H):</font>" + Eval("Height") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("TemperatureCharacter"))) == true ? "" : "<font color=#2965a5>温度特性:</font>" + Eval("TemperatureCharacter") + " "%>                                                               
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("RMSVoltage"))) == true ? "" : "<font color=#2965a5>均方根电压:</font>" + Eval("RMSVoltage") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("ClampingVoltage"))) == true ? "" : "<font color=#2965a5>箝位电压:</font>" + Eval("ClampingVoltage") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("VoltageRiseRate"))) == true ? "" : "<font color=#2965a5>电压上升率:</font>" + Eval("VoltageRiseRate") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("RippleCurrent"))) == true ? "" : "<font color=#2965a5>纹波电流:</font>" + Eval("RippleCurrent") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("LeakageCurrent"))) == true ? "" : "<font color=#2965a5>漏电流:</font>" + Eval("LeakageCurrent") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("ESR"))) == true ? "" : "<font color=#2965a5>等效电阻:</font>" + Eval("ESR") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Impedance"))) == true ? "" : "<font color=#2965a5>阻抗:</font>" + Eval("Impedance") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("UsefulLife"))) == true ? "" : "<font color=#2965a5>使用时间:</font>" + Eval("UsefulLife") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("LoadLife"))) == true ? "" : "<font color=#2965a5>负载时间:</font>" + Eval("LoadLife") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("OperatingTemperature"))) == true ? "" : "<font color=#2965a5>工作温度:</font>" + Eval("OperatingTemperature") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("Termination"))) == true ? "" : "<font color=#2965a5>终端:</font>" + Eval("Termination") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("AdjustmentDirection"))) == true ? "" : "<font color=#2965a5>调整方向:</font>" + Eval("AdjustmentDirection") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("PackingStyle"))) == true ? "" : "<font color=#2965a5>包装方式:</font>" + Eval("PackingStyle") + " "%>
                                                                 <%# string.IsNullOrEmpty(Convert.ToString(Eval("PackingQuantity"))) == true ? "" : "<font color=#2965a5>包装数量:</font>" + Eval("PackingQuantity") + " "%>                                                         
                                                       </td>
                                                  </tr>
                                        </ItemTemplate>
                                  <FooterTemplate>
                                         </table>
                                        </FooterTemplate>
                                        </asp:Repeater>
                                       
         </div>      
       <center>           
      <cc1:PagerManager ID="PagerManager1" runat="server" onpagechanged="PagerManager1_PageChanged" ShowInputBox ="Always" SubmitButtonText="Go"   Width="80%" PageSize="20"></cc1:PagerManager>                                       
       </center>         
    </div>
</BODY>
</HTML>
 ]]>
      </code><p>该示例所用的Sql Server存储过程代码如下:</p><code>
<![CDATA[
/*********************************************************************************
  
     功能:  分页管理器                                
     测试: 
[dbo].[PagerManager] 'Capacitors','*',30,1,'Where RatedVoltage=''50V''' ,'PriceNo',2 
                                                     
[dbo].[PagerManager] 'Capacitors','*',30,301,' Where 1=1  and Brand like ''%日本%''' ,'PriceNo',2               
                                                                                      
                        
*********************************************************************************/
CREATE  PROCEDURE [dbo].[PagerManager]
(
 @TableName  nvarchar(50),   -- 表名
 @ReturnFields nvarchar(2000) = '*', -- 需要返回的列
 @PageSize  int = 10,    -- 每页记录数
 @PageIndex  int = 1,    -- 当前页码
 @Where   nvarchar(2000) = '', -- 查询条件
 @Orderfld  nvarchar(2000),   -- 排序字段名 最好为唯一主键
 @OrderType  int = 1     -- 排序类型 1:降序 其它为升序
 
)
AS
    DECLARE @TotalRecord int
 DECLARE @TotalPage int
 DECLARE @CurrentPageSize int
    DECLARE @TotalRecordForPageIndex int
    DECLARE @OrderBy nvarchar(255)
    DECLARE @CutOrderBy nvarchar(255)
 
 if @OrderType = 1
  BEGIN
   set @OrderBy = ' Order by ' + REPLACE(@Orderfld,',',' desc,') + ' desc '
   set @CutOrderBy = ' Order by '+ REPLACE(@Orderfld,',',' asc,') + ' asc '
  END
 else
  BEGIN
   set @OrderBy = ' Order by ' +  REPLACE(@Orderfld,',',' asc,') + ' asc '
   set @CutOrderBy = ' Order by '+ REPLACE(@Orderfld,',',' desc,') + ' desc '  
  END
 
 
        -- 记录总数
 declare @countSql nvarchar(4000) 
 set @countSql='SELECT @TotalRecord=Count(*) From '+@TableName+' '+@Where
 execute sp_executesql @countSql,N'@TotalRecord int out',@TotalRecord out
 
 SET @TotalPage=(@TotalRecord-1)/@PageSize+1
 SET @CurrentPageSize=@PageSize
        IF(@TotalPage=@PageIndex)
 BEGIN
  SET @CurrentPageSize=@TotalRecord%@PageSize
  IF(@CurrentPageSize=0)
   SET @CurrentPageSize=@PageSize
 END
-- 返回总页数和总记录数
 SELECT @TotalPage as PageCount,@TotalRecord as RecordCount
 -- 返回记录
 set @TotalRecordForPageIndex=@PageIndex*@PageSize
 exec('SELECT * FROM
  (SELECT TOP '+@CurrentPageSize+' * FROM
   (SELECT TOP '+@TotalRecordForPageIndex+' '+@ReturnFields+'
   FROM '+@TableName+' '+@Where+' '+@OrderBy+') TB2
  '+@CutOrderBy+') TB3
              '+@OrderBy)

 

 ]]>
</code>
      </example>
  </Class>
</PagerManagerDoc>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值