亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

牛腩購物小結之: anpnetpager分頁控件的使用圖

系統 1724 0

分頁控件的使用

一:下載,并在 vs2010 里面添加? anpnetpager 控件

1:? 下載?? http://www.webdiyer.com/Controls/AspNetPager/Downloads 下載

image

2:?? 將 AspNetPager.dll 和 AspNetPager.xml 考入到項目的 bin 文件夾 并在Bin文件夾上引用AspNetPager。(這一步其實可以用不,執行下面的第三部,就會把第二步執行一次的,不過這個 xml 好像不會自動考進來,所以我們還是把第一步 執行比較好)

? image 拷貝到 web層的Bin文件夾,并引用。

?

3:在VS2010 工具欄上面,右鍵新建項,然后找到剛才 bin文件的 AspNetPager.dll ,這樣在工具欄就可以使用 AspNetPager了,將控件拖到你需要分頁的地方,就可以了。

image image

然后就可以在工具欄看到 AspNetPager 控件了

image

?

二: 下面開始如何分頁的步驟

1:分頁控件的準備,我們上面已經做好了

2:在sql2005以及以上,運行分頁的存儲過程

      
        -- =============================================
      
      
        -- Author:		牛腩
      
      
        -- Create date: 2009-07-22 12:41
      
      
        -- Description:	分頁,用到了ROW_NUMBER()
      
      
        -- =============================================
      
      
        ALTER
      
      
        PROCEDURE
      
       [dbo].[proc_FenYe]

@tblName   
      
        varchar
      
      (255),       
      
        -- 表名
      
      

@strGetFields 
      
        varchar
      
      (1000) = '
      
        *
      
      ', 
      
        -- 需要返回的列,默認*
      
      

@strOrder 
      
        varchar
      
      (255)='
      
      
      ',      
      
        -- 排序的字段名,必填
      
      

@strOrderType 
      
        varchar
      
      (10)='
      
        ASC
      
      ', 
      
        -- 排序的方式,默認ASC
      
      

@PageSize   
      
        int
      
       = 10,          
      
        -- 頁尺寸,默認10
      
      

@PageIndex 
      
        int
      
       = 1,           
      
        -- 頁碼,默認1
      
      

@strWhere 
      
        varchar
      
      (1500) = '
      
      
      ' 
      
        -- 查詢條件 (注意: 不要加 where)
      
      
        AS
      
      
        declare
      
       @strSQL   
      
        varchar
      
      (5000)




      
        if
      
       @strWhere !='
      
      
      '


      
        set
      
       @strWhere='
      
         where 
      
      '+@strWhere




      
        set
      
       @strSQL=

'
      
        SELECT * FROM (
      
      '+

	'
      
        SELECT ROW_NUMBER() OVER (ORDER BY 
      
      '+@strOrder+'
      
      
      '+@strOrderType+'
      
        ) AS pos,
      
      '+@strGetFields+'
      
      
      '+

	'
      
        FROM 
      
      '+@tblName+'
      
      
      '+@strWhere+

'
      
        ) AS sp WHERE pos BETWEEN 
      
      '+str((@PageIndex-1)*@PageSize+1)+'
      
         AND 
      
      '+str(@PageIndex*@PageSize)




      
        exec
      
       (@strSQL)
    

注意:如果用到多表查詢,還是使用上面的這個存儲過程,下面是在sqlserver 2005 中的查詢分析器中調用 上面的存儲過程來進行多表查詢

      //這里是在存儲過程里面的調用方法,可以使用多表查詢的。


      
        EXEC
      
          [proc_ShowPage]   

        @tblName = N'
      
        (project p inner join projectca ca on p.caid=ca.id)
      
      ',   

        @strGetFields = N'
      
        p.title,ca.caname
      
      ',   

        @strOrder = N'
      
        p.id
      
      ',   

        @strOrderType = N'
      
        desc
      
      ',   

        @PageSize = 12,   

        @PageIndex = 1,   

        @strWhere = N'
      
      
      ' 
    

?

2:在頁面上需要使用分頁控件的地方,拉入控件,修改 上一頁,下一頁,尾頁和首頁的文字,設置為一直顯示。

      <webdiyer:AspNetPager ID="
      
        anp
      
      " runat="
      
        server
      
      " AlwaysShow="
      
        True
      
      " 

                    FirstPageText="
      
        首頁
      
      " LastPageText="
      
        尾頁
      
      " NextPageText="
      
        下一頁
      
      " PrevPageText="
      
        上一頁
      
      " 

                    CustomInfoHTML="
      
        總計%RecordCount%條記錄,共%PageCount%頁,每頁%PageSize%條
      
      " 

                    ShowCustomInfoSection="
      
        Left
      
      " CssClass="
      
        paginator
      
      " 

                    CurrentPageButtonClass="
      
        cpb
      
      " CustomInfoSectionWidth="
      
      
      "  >


    

然后設置它的CSS,使用拍拍網的樣式

      
        
.paginator
{ font : 11px Arial, Helvetica, sans-serif ; padding : 10px 20px 10px 0 ; margin : 0px ;} .paginator a { padding : 1px 6px ; border : solid 1px #ddd ; background : #fff ; text-decoration : none ; margin-right : 2px } .paginator a:visited { padding : 1px 6px ; border : solid 1px #ddd ; background : #fff ; text-decoration : none ;} .paginator .cpb { padding : 1px 6px ; font-weight : bold ; font-size : 13px ; border : none } .paginator a:hover { color : #fff ; background : #ffa501 ; border-color : #ffa501 ; text-decoration : none ;}






然后給 anp控件加上 屬性設置: CssClass=" paginator " CurrentPageButtonClass=" cpb "

?

3:在分頁控件上,雙擊 進入后臺編寫分頁控件點擊的代碼(先是統計anp分頁控件的所有的產品數,然后是給產品rep綁定)

    Niunan.Shop.DAL.
    
      ProductDAO 
    
    pro = 
    
      new 
    
    DAL.
    
      ProductDAO
    
    ();

        
    
      protected void 
    
    Page_Load(
    
      object 
    
    sender, 
    
      EventArgs 
    
    e)

        {

            
    
      //頁面進入的時候,分頁控件先統計總的條數,然后綁定產品

            
    
    
      if 
    
    (!Page.IsPostBack)

            {

                anp.RecordCount = pro.ClacCount(getCond());

                BindRepPro();

            }

        }



        
    
      //綁定產品

        
    
    
      private void 
    
    BindRepPro()

        {

            
    
      //這里獲取產品的時候,是調用分頁來調用。分頁的個數由 anp.PageSize 控制

            
    
    repNewPro.DataSource = pro.GetList(
    
      "*"
    
    , 
    
      "id"
    
    , 
    
      "desc"
    
    , anp.PageSize, anp.CurrentPageIndex, getCond());

            repNewPro.DataBind();

        }



        
    
      //獲取條件

        
    
    
      private string 
    
    getCond()

        {

            
    
      string 
    
    cond = 
    
      "isxp=1"
    
    ;

            
    
      return 
    
    cond;

        }

        
    
      //分頁控件點擊事件(實際上就是重新綁定產品)

        
    
    
      protected void 
    
    anp_PageChanged(
    
      object 
    
    sender, 
    
      EventArgs 
    
    e)

        {

            BindRepPro();

        }


  

注釋事項:

我們在寫一般的存儲過程/多表查詢的時候,要記得,用 inner join 這個是個好習慣,因為我們一般的存儲過程,要轉換為 分頁的查詢的時候,有這個 inner join 就很明顯的知道是查詢哪幾張表

假如我們在 ajax控件里面有用到分頁控件,那么如果是 postback提交分頁 ,則ajax有效(也就是url不會有動靜,但是頁面有修改), 如果是 url 分頁 ,那么頁面的url會跟著改變了,就會變成 page=2 這樣。

?

更加詳細的設置,參見下面2篇分頁文章?

1:牛腩新聞發布系統? http://www.cnblogs.com/1727050508/archive/2012/02/29/2373612.html

2:牛腩購物系統??????? http://www.cnblogs.com/1727050508/archive/2012/03/05/2379982.html

?

?

?

注意:1使用的分頁函數是 只有3個參數的

image

2:使用的是 6個 參數的(實際存儲過程需要7個參數,但是表名我們是手動在下面寫了 shop_product)

    
      /// <summary>
    
    
      分頁獲取數據列表

        
    
    
      /// 

        /// </summary>

        /// <param name="strGetFields">
    
    
      選擇的字段
    
    
      </param>

        /// <param name="strOrder">
    
    
      排序字段
    
    
      </param>

        /// <param name="strOrderType">
    
    
      排序類型 desc或者asc
    
    
      </param>

        /// 
    
    
      /// 
    
    
      <param name="PageSize">
    
    
      頁面大小
    
    
      </param>

        /// <param name="PageIndex">
    
    
      頁索引
    
    
      </param>

        /// <param name="strWhere">
    
    
      條件
    
    
      </param>

        /// <returns></returns>

        
    
    
      public 
    
    
      DataSet 
    
    GetList(
    
      string 
    
    strGetFields, 
    
      string 
    
    strOrder, 
    
      string 
    
    strOrderType, 
    
      int 
    
    PageSize, 
    
      int 
    
    PageIndex, 
    
      string 
    
    strWhere)

        {

            
    
      Database 
    
    db = 
    
      DatabaseFactory
    
    .CreateDatabase();

            
    
      DbCommand 
    
    dbCommand = db.GetStoredProcCommand(
    
      "proc_FenYe"
    
    );

            db.AddInParameter(dbCommand, 
    
      "tblName"
    
    , 
    
      DbType
    
    .AnsiString, 
    
      "shop_product"
    
    );

            db.AddInParameter(dbCommand, 
    
      "strGetFields"
    
    , 
    
      DbType
    
    .AnsiString, strGetFields);

            db.AddInParameter(dbCommand, 
    
      "PageSize"
    
    , 
    
      DbType
    
    .Int32, PageSize);

            db.AddInParameter(dbCommand, 
    
      "PageIndex"
    
    , 
    
      DbType
    
    .Int32, PageIndex);

            db.AddInParameter(dbCommand, 
    
      "strOrder "
    
    , 
    
      DbType
    
    .String, strOrder);

            db.AddInParameter(dbCommand, 
    
      "strOrderType"
    
    , 
    
      DbType
    
    .String, strOrderType);

            db.AddInParameter(dbCommand, 
    
      "strWhere"
    
    , 
    
      DbType
    
    .AnsiString, strWhere);

            
    
      return 
    
    db.ExecuteDataSet(dbCommand);

        }



        
    
      /// <summary>
    
    
      獲取總的記錄數

        
    
    
      /// 

        /// </summary>

        /// <param name="strWhere"></param>

        /// <returns></returns>

        
    
    
      public int 
    
    ClacCount(
    
      string 
    
    strWhere)

        {

            
    
      string 
    
    sql = 
    
      "select count(1) from shop_product"
    
    ;

            
    
      if 
    
    (!
    
      string
    
    .IsNullOrEmpty(strWhere))

            {

                sql += 
    
      " where " 
    
    + strWhere;

            }

            
    
      Database 
    
    db = 
    
      DatabaseFactory
    
    .CreateDatabase();

            
    
      DbCommand 
    
    dbCommand = db.GetSqlStringCommand(sql);

            
    
      return int
    
    .Parse(db.ExecuteScalar(dbCommand).ToString());



        }


  

3:在牛腩新聞發布系統的時候,使用過一次多表查詢分頁,但是是3個參數的,以后我們使用的時候,修改成多個參數即可

    
      /// <summary>分頁選擇新聞
    
    
      /// 
    
    
      /// </summary>
    
    
      /// <param name="pageSize">頁面大小</param>
    
    
      /// <param name="pageIndex">頁索引</param>
    
    
      /// <param name="cond">條件(不用加where)</param>
    
    
      /// <returns></returns>
    
    
      public
    
     DataTable Select(
    
      int
    
     pageSize, 
    
      int
    
     pageIndex, 
    
      string
    
     cond)

        {

            
    
      //執行分頁的存儲過程  [proc_FenYe]
    
    

            DataTable dt = 
    
      new
    
     DataTable();

            
    
      string
    
     procname = "
    
      proc_FenYe
    
    ";

            SqlParameter[] paras = 
    
      new
    
     SqlParameter[]{

            
    
      new
    
     SqlParameter("
    
      @tblName
    
    ","
    
      (news a inner join  category b on a.caId=b.id and a.caId=b.id)
    
    " 
    
      as
    
    
      object
    
    ),

            
    
      new
    
     SqlParameter("
    
      @strGetFields
    
    ","
    
      a.id,a.title,a.caid,a.createtime,a.content,b.name
    
    " 
    
      as
    
    
      object
    
    ),

            
    
      new
    
     SqlParameter("
    
      @strOrder
    
    ","
    
      a.createtime
    
    " 
    
      as
    
    
      object
    
    ),   
    
      //通過time來排序
    
    
      new
    
     SqlParameter("
    
      @strOrderType
    
    ","
    
      desc
    
    " 
    
      as
    
    
      object
    
    ),

            
    
      new
    
     SqlParameter("
    
      @PageSize 
    
    ",pageSize 
    
      as
    
    
      object
    
    ),

            
    
      new
    
     SqlParameter("
    
      @PageIndex
    
    ",pageIndex 
    
      as
    
    
      object
    
    ),

            
    
      new
    
     SqlParameter("
    
      @strWhere
    
    ",cond 
    
      as
    
    
      object
    
    )

            };

            dt = 
    
      new
    
     SQLHelper().ExecuteQuery(procname, paras, CommandType.StoredProcedure);

            
    
      return
    
     dt;

        }


  

牛腩購物小結之: anpnetpager分頁控件的使用圖文教程,anpnetpager分頁多表查詢


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久热精品视频在线 | 日本精品夜色视频一区二区 | 免费一级毛片在线播放 | 国产精品福利久久2020 | 亚洲欧美日本国产综合在线 | 久久9999国产精品免费 | 国产精品久久久久这里只有精品 | 久久国产影视 | 老司机午夜精品视频在线观看免费 | 欧美亚洲一区二区三区在线 | 男女污污视频在线观看 | 国产在线公开视频 | 四虎影院黄色片 | 亚洲精品天堂一区二区三区 | 亚洲精品99久久久久久 | 91亚洲国产| 久久9966精品国产免费 | 波多野结衣国产精品 | 中文字幕天堂久久精品 | 精品三级国产一区二区三区四区 | 乱在线伦视频免费 | 特级特黄一级乱仑 | 四虎永久在线日韩精品观看 | 99视频免费 | 欧美在线激情 | 亚洲日本一区二区三区在线不卡 | 亚洲一区二区三区高清 不卡 | 日本不卡视频网站 | 香蕉一区 | 成人黄色在线 | 欧美色影院 | 久操国产 | 黄色在线视频网站 | 久久综合图区亚洲综合图区 | 日日夜夜摸摸 | 五月天色区| 超清波多野结衣精品一区 | 日韩综合nv一区二区在线观看 | 精品久久久久久免费影院 | 欧美一区二区三区婷婷月色 | 久热中文 |