302班

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

          DataList自定義分頁+存儲過程

          Posted on 2007-07-20 13:37 停留的風 閱讀(1074) 評論(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
          存儲過程執行出錯啊

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


          網站導航:
           
          主站蜘蛛池模板: 新龙县| 新兴县| 南木林县| 石楼县| 甘肃省| 石城县| 闵行区| 余江县| 兰西县| 博客| 龙门县| 惠东县| 广昌县| 福鼎市| 乌兰察布市| 灵寿县| 古蔺县| 嘉定区| 黎平县| 澜沧| 汤原县| 巧家县| 贡觉县| 张家口市| 赣州市| 余干县| 南城县| 寻乌县| 普宁市| 临高县| 会同县| 扶绥县| 宾川县| 涟源市| 醴陵市| 绥化市| 固原市| 茌平县| 外汇| 神农架林区| 漠河县|