<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    302班

    java突擊隊
    posts - 151, comments - 74, trackbacks - 0, articles - 14
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    DataList自定義分頁+存儲過程

    Posted on 2007-07-20 13:37 停留的風 閱讀(1072) 評論(3)  編輯  收藏
     

    1.頁面后臺代碼
    private void Page_Load(object sender, System.EventArgs e)
    {
     if(!Page.IsPostBack)
     {
      ItemCount=GetItemCount();   //獲取總記錄數
      PageSize=5;     //設置每頁顯示多少條記錄
      NumSize=6;     //設置分頁按鈕顯示數量
      if(ItemCount==0)   //計算總頁數
       PageCount=1;
      else
       PageCount=ItemCount%PageSize==0?ItemCount/PageSize:ItemCount/PageSize+1;
      PageURL=Request.Path;  //獲取當前頁面的URL
      string URLParameters="?Page=";  //額外的URL參數設置
      PageURL+=URLParameters;
      Bind_PagerList();
     }
     string RequestPage=Request.QueryString["Page"];
     if(RequestPage==null || RequestPage==string.Empty || int.Parse(RequestPage)<=0) //計算PageIndex
      PageIndex=1;
     else if(int.Parse(RequestPage)>PageCount)
      PageIndex=PageCount;
     else
      PageIndex=int.Parse(RequestPage);
     this.dlPager.SelectedIndex=PageIndex-1;  //下拉列表選定項
     Bind_Pager();        //綁定分頁Panel所有按鈕
     Bind_DataList();       //數據綁定
    }

    private void Bind_Pager()
    {
     lnkFirst.NavigateUrl=PageURL+1;
     lnkFirst.ToolTip="轉到第1頁";
     lnkPrev.NavigateUrl=PageURL+(PageIndex-1);
     lnkPrev.ToolTip="轉到第"+(PageIndex-1)+"頁";
     lnkNext.NavigateUrl=PageURL+(PageIndex+1);
     lnkNext.ToolTip="轉到第"+(PageIndex+1)+"頁";
     lnkLast.NavigateUrl=PageURL+PageCount;
     lnkLast.ToolTip="轉到第"+PageCount+"頁";
     if(PageCount==1) //只有1頁
     {
      lnkFirst.Enabled=false;
      lnkPrev.Enabled=false;
      lnkNext.Enabled=false;
      lnkLast.Enabled=false;
     }     //多頁
     else if(PageIndex==1) //當前頁為第一頁
     {
      lnkFirst.Enabled=false;
      lnkPrev.Enabled=false;
      lnkNext.Enabled=true;
      lnkLast.Enabled=true;
     }
     else if(PageIndex==PageCount) //當前頁為最后頁
     {
      lnkFirst.Enabled=true;
      lnkPrev.Enabled=true;
      lnkNext.Enabled=false;
      lnkLast.Enabled=false;
     }
     else  //中間任意頁
     {
      lnkFirst.Enabled=true;
      lnkPrev.Enabled=true;
      lnkNext.Enabled=true;
      lnkLast.Enabled=true;
     }
     HyperLink NumBtns;
     int PageBase=PageIndex%NumSize==0?PageIndex/NumSize-1:PageIndex/NumSize;
     for(int i=PageBase*NumSize+1;i<=(PageBase+1)*NumSize && i<=PageCount;i++) //分頁按鈕綁定 例如 1-10…,…11-20…...
     {
      if(i!=1 && i==PageBase*NumSize+1)   //頁標前的…
      {
       NumBtns = new HyperLink();
       NumBtns.Text="…";
       NumBtns.ToolTip="轉到第"+(i-1)+"頁";
       NumBtns.NavigateUrl=PageURL+(i-1);
       NumBtns.Enabled=true;
       NumBtns.CssClass="pager";
       lbPager.Controls.Add(NumBtns);
      }
      if(i==PageIndex)       //當前頁
      {
       NumBtns = new HyperLink();
       NumBtns.Text=i.ToString();
       NumBtns.Font.Bold=true;
       NumBtns.ForeColor=Color.Red;
       NumBtns.CssClass="pager";
       lbPager.Controls.Add(NumBtns);
      }
      else          //其他頁
      {
       NumBtns = new HyperLink();
       NumBtns.Text=i.ToString();
       NumBtns.ToolTip="轉到第"+i.ToString()+"頁";
       NumBtns.NavigateUrl=PageURL+i.ToString();
       NumBtns.Enabled=true;
       NumBtns.CssClass="pager";
       lbPager.Controls.Add(NumBtns);
      }
      if(i!=PageCount && i==(PageBase+1)*NumSize) //頁標后的…
      {
       NumBtns = new HyperLink();
       NumBtns.Text="…";
       NumBtns.ToolTip="轉到第"+(i+1)+"頁";
       NumBtns.NavigateUrl=PageURL+(i+1);
       NumBtns.Enabled=true;
       NumBtns.CssClass="pager";
       lbPager.Controls.Add(NumBtns);
      }
     }
    }

    private void Bind_DataList()
    {
     using(SqlConnection myconn=new SqlConnection(ConfigurationSettings.AppSettings["connStr"]))
     {
      SqlCommand mycmd=new SqlCommand("sp_Pager",myconn);
      mycmd.CommandType=CommandType.StoredProcedure;
      mycmd.Parameters.Add(new SqlParameter("@PageSize",SqlDbType.Int));
      mycmd.Parameters["@PageSize"].Value=PageSize;
      mycmd.Parameters.Add(new SqlParameter("@PageIndex",SqlDbType.Int));
      mycmd.Parameters["@PageIndex"].Value=PageIndex;
      myconn.Open();
      this.DataList1.DataSource=mycmd.ExecuteReader();
      this.DataList1.DataBind();
      myconn.Close();
     }
    }

    private void Bind_PagerList()
    {
     for(int i=1;i<=PageCount;i++)
     {
      dlPager.Items.Add(new ListItem("第"+i.ToString()+"頁",i.ToString()));
     }
     dlPager.Attributes["OnChange"]="location.href="/"+PageURL+"'+this.value";
    }

    2.存儲過程

    CREATE PROCEDURE sp_Pager
    (
    @PageSize int,  -- 一頁顯示記錄數
    @PageIndex int  -- 當前頁碼(從1開始)
    )
    as
    declare @strSQL nvarchar(1000) -- 主語句

    if (@PageIndex=1)
    begin
    set @strSQL="select top "+str(@Pagesize)+" * from 數據表 order by 排序字段 desc"
    end
    else if(@PageIndex>1)
    begin
    set @strSQL="select top " + str(@PageSize) + "  *  from 數據表 where ( 自增字段  <
    (select min (自增字段) from (select top "+ str(@PageSize*(@PageIndex-1)) + " 自增字段 from 數據表 order
     by 自增字段 desc) as T )) order by 排序字段 desc"
    end
    exec(@strSQL)
    GO


    評論

    # re: DataList自定義分頁+存儲過程   回復  更多評論   

    2008-04-06 18:07 by GSD
    抱歉!太復雜了!沒有源碼!太難理解了!

    # re: DataList自定義分頁+存儲過程   回復  更多評論   

    2009-05-27 19:12 by 說的說的是
    拜托 給個前臺代碼好不

    # re: DataList自定義分頁+存儲過程   回復  更多評論   

    2010-01-27 15:06 by nini
    存儲過程執行出錯啊

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品V欧洲精品V日韩精品| 免费一级毛片一级毛片aa| 亚洲日韩aⅴ在线视频| 又硬又粗又长又爽免费看| 亚洲av午夜精品一区二区三区| 亚洲国产成人AV网站| 免费一级肉体全黄毛片| 特级毛片免费播放| 亚洲Av无码乱码在线观看性色| 美女黄色免费网站| 亚洲欧洲中文日韩久久AV乱码| 一级做a爰片性色毛片免费网站 | 亚洲乱码在线卡一卡二卡新区| 亚洲精品国产免费| 亚洲一区二区三区在线| 99久久久精品免费观看国产| 激情五月亚洲色图| 免费一级毛片清高播放| 中文字幕永久免费视频| 久久亚洲私人国产精品| 成人AV免费网址在线观看| 99re6在线视频精品免费下载| 亚洲AV午夜成人影院老师机影院| 美女免费视频一区二区| 亚洲一级特黄大片在线观看| 国产精品小视频免费无限app| 亚洲成av人在线视| 成人免费在线看片| 色www免费视频| 亚洲va在线va天堂va不卡下载| 人人鲁免费播放视频人人香蕉| 亚洲日韩精品一区二区三区无码| 最近中文字幕无免费| 亚洲色大成网站www尤物| 国产亚洲一区二区三区在线不卡| 精品国产人成亚洲区| a级毛片无码免费真人久久| 亚洲无圣光一区二区| 免费一区二区视频| 中文字幕亚洲免费无线观看日本| 亚洲第一成年免费网站|