日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单的分页控件

發布時間:2024/4/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单的分页控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單的分頁控件

常看圓子里面的網友說分頁控件。也有很多人在網上找一個好用的分頁控件。我把自己做的放一個上來給大家吧。其實東西蠻簡單的,看懂了思路就可以動手寫一個了。

廢話不多說。先表明需求:

  • 能分頁(廢話)
  • 能夠在禁用viewstate的情況下也可以正常使用
  • 代碼簡單
  • 不修改地址欄
  • 要達到需求中的第2和第4條就需要一些輔助對象。因為不使用viewstate那么就需要使用能夠保存當前頁面的對象,TextBox、Literal和Label都可以實現。為了簡化控件里面的控件對象,特別是頁碼對象,則使用直接Html代碼的方式,通過a標簽中的href屬性對頁碼的文本框內容修改,然后引發postback以把分頁結果返回到服務器端,具體實現偷了懶,直接用了 pageNumLinkString? 變量。其實“首頁”、“上一頁”、“下一頁”和“末頁”也可以用同樣的思路來實現。單修改就可以增加跳轉到某頁的功能(把倆個控件的style屬性去了就可以了)。

    分頁的用戶控件的頁面代碼:

    用戶控件代碼
    ?1<asp:Panel?ID="PageDiv"?CssClass="SplitPage"?runat="server"?Width="100%"?HorizontalAlign="Right">
    ?2????<asp:LinkButton?ID="lkbtnFirst"?runat="server"?OnClick="lkbtnFirst_Click">首頁</asp:LinkButton>&nbsp;
    ?3????<asp:LinkButton?ID="lkbtnPre"?runat="server"?OnClick="lkbtnPre_Click">上一頁</asp:LinkButton>&nbsp;
    ?4????<asp:Literal?runat="server"?ID="lbPageNum"></asp:Literal>
    ?5????<asp:TextBox?ID="tbPageNum"?runat="server"?Style="display:?none;"></asp:TextBox>
    ?6????<asp:Button?ID="btnSplitPostBack"?runat="server"?OnClick="btnSplitPostBack_Click"?Style="display:?none;"?UseSubmitBehavior="false"?/>&nbsp;
    ?7????<asp:LinkButton?ID="lkbtnNext"?runat="server"?OnClick="lkbtnNext_Click">下一頁</asp:LinkButton>&nbsp;
    ?8????<asp:LinkButton?ID="lkbtnLast"?runat="server"?OnClick="lkbtnLast_Click">末頁</asp:LinkButton>&nbsp;
    ?9????<asp:Literal?ID="ltSplitPageInfo"?runat="server"></asp:Literal>
    10????<asp:TextBox?ID="tbCurrentPageNum"?runat="server"?Style="display:?none;"></asp:TextBox>
    11</asp:Panel>

    對應代碼頁代碼:

    頁面代碼
    ??1public?partial?class?SplitPage?:?System.Web.UI.UserControl
    ??2{
    ??3????/**////?<summary>
    ??4????????///?分頁事件
    ??5?????????///?</summary>
    ??6????????///?<param?name="sender">SplitPageControl對象</param>
    ??7????????///?<param?name="e">分頁參數</param>
    ??8????????///?<returns></returns>

    ??9????????[Description("分頁")]
    ?10????????public?event?EventHandler<SplitEventArgs>?SplitPaging(object?sender?,SplitEventArgs?e);
    ?11
    ?12????????/**////?<summary>
    ?13????????///?頁碼鏈接
    ?14?????????///?</summary>

    ?15????????private?static?string?pageNumLinkString?=?"&nbsp;<a?href=\"javascript:document.getElementById('{0}').value={1};__doPostBack('{2}','');\"?class=\"SplitPageLink\">{1}</a>";
    ?16
    ?17????????/**////?<summary>
    ?18????????///?每頁顯示紀錄數
    ?19?????????///?</summary>

    ?20????????public?int?PerPageShowCount
    ?21????????{
    ?22????????????get
    ?23????????????{
    ?24????????????????object?obj?=?ViewState["perPageShowCount"];
    ?25????????????????if?(obj?==?null)
    ?26????????????????????return?10;
    ?27????????????????return?(int)obj;
    ?28????????????}

    ?29????????????set
    ?30????????????{
    ?31????????????????if?(value?<?0)
    ?32????????????????????value?=?10;
    ?33????????????????ViewState["perPageShowCount"]?=?value;
    ?34????????????}

    ?35????????}

    ?36
    ?37????????/**////?<summary>
    ?38????????///?設置或獲取當前記錄的頁碼位置
    ?39?????????///?</summary>

    ?40????????public?int?PageNum
    ?41????????{
    ?42????????????get
    ?43????????????{
    ?44????????????????return?int.Parse(tbCurrentPageNum.Text);
    ?45????????????}

    ?46????????????set
    ?47????????????{
    ?48????????????????if?(value?<?0)
    ?49????????????????????value?=?0;
    ?50????????????????tbCurrentPageNum.Text?=?value.ToString();
    ?51????????????}

    ?52????????}

    ?53
    ?54????????/**////?<summary>
    ?55????????///?設置或獲取當前記錄的總頁碼數
    ?56????????///?</summary>

    ?57????????public?int?MaxPageNum
    ?58????????{
    ?59????????????get
    ?60????????????{
    ?61????????????????object?obj?=?ViewState["MaxPageNum"];
    ?62????????????????if?(obj?==?null)
    ?63????????????????????return?1;
    ?64????????????????return?(int)obj;
    ?65????????????}

    ?66????????????set
    ?67????????????{
    ?68????????????????if?(value?<=?0)
    ?69????????????????????value?=?1;
    ?70????????????????ViewState["MaxPageNum"]?=?value;
    ?71????????????}

    ?72????????}

    ?73
    ?74????????/**////?<summary>
    ?75????????///?設置或獲取是否顯示頁碼
    ?76????????///?</summary>

    ?77????????public?bool?ShowPageNum
    ?78????????{
    ?79????????????get
    ?80????????????{
    ?81????????????????object?obj?=?ViewState["ShowPageNum"];
    ?82????????????????if?(obj?==?null)
    ?83????????????????????return?false;
    ?84????????????????return?(bool)obj;
    ?85????????????}

    ?86????????????set
    ?87????????????{
    ?88????????????????ViewState["ShowPageNum"]?=?value;
    ?89????????????}

    ?90????????}

    ?91
    ?92????????/**////?<summary>
    ?93????????///?內部使用分頁
    ?94????????///?</summary>
    ?95????????///?<param?name="currentPage">當前頁碼</param>
    ?96????????///?<param?name="perPageShowCount">每頁顯示多少條頁碼</param>

    ?97????????private?void?SetSplitPage(int?currentPage,?int?perPageShowCount)
    ?98????????{
    ?99????????????OnSplitPaging(new?SplitEventArgs(currentPage,?perPageShowCount));
    100????????}

    101
    102????????/**////?<summary>
    103????????///?引發分頁事件
    104????????///?</summary>
    105????????///?<param?name="loadDataInfo">加載數據用函數</param>

    106????????protected?virtual?void?OnSplitPaging(SplitEventArgs?e)
    107????????{
    108????????????if?(SplitPaging?!=?null)
    109????????????????SplitPaging(this,?e);
    110????????}

    111
    112????????/**////?<summary>
    113????????///?分頁控制
    114????????///?</summary>
    115????????///?<param?name="pageNum">當前頁碼</param>
    116????????///?<param?name="sp">分頁對象</param>

    117????????public?void?SetSplitPageInfo(int?currentPageNum,?int?PageCount)
    118????????{
    119????????????PageNum?=?currentPageNum;
    120????????????MaxPageNum?=?PageCount;
    121????????????ltSplitPageInfo.Text?=?string.Format("第{0}頁,共{1}頁,每頁{2}行",?(PageNum?+?1),?MaxPageNum,?PerPageShowCount);
    122????????????if?(MaxPageNum?>?1)//頁碼多余一頁?分頁控制判斷
    123????????????{
    124????????????????if?(PageNum?==?0)//在首頁
    125????????????????{
    126????????????????????lkbtnFirst.Enabled?=?false;
    127????????????????????lkbtnLast.Enabled?=?true;
    128????????????????????lkbtnNext.Enabled?=?true;
    129????????????????????lkbtnPre.Enabled?=?false;
    130????????????????}

    131????????????????else?if?(PageNum?==?(MaxPageNum?-?1))//在末頁
    132????????????????{
    133????????????????????lkbtnFirst.Enabled?=?true;
    134????????????????????lkbtnLast.Enabled?=?false;
    135????????????????????lkbtnNext.Enabled?=?false;
    136????????????????????lkbtnPre.Enabled?=?true;
    137????????????????}

    138????????????????else?if?(PageNum?>?(MaxPageNum?-?1))//當前頁大于頁碼總數
    139????????????????{
    140????????????????????lkbtnFirst.Enabled?=?false;
    141????????????????????lkbtnLast.Enabled?=?false;
    142????????????????????lkbtnNext.Enabled?=?false;
    143????????????????????lkbtnPre.Enabled?=?false;
    144????????????????}

    145????????????????else//在其他頁碼
    146????????????????{
    147????????????????????lkbtnFirst.Enabled?=?true;
    148????????????????????lkbtnLast.Enabled?=?true;
    149????????????????????lkbtnNext.Enabled?=?true;
    150????????????????????lkbtnPre.Enabled?=?true;
    151????????????????}

    152????????????}

    153????????????else//只有一頁
    154????????????{
    155????????????????lkbtnFirst.Enabled?=?false;
    156????????????????lkbtnLast.Enabled?=?false;
    157????????????????lkbtnNext.Enabled?=?false;
    158????????????????lkbtnPre.Enabled?=?false;
    159????????????}

    160
    161????????????if?(ShowPageNum)
    162????????????{
    163????????????????StringBuilder?sb?=?new?StringBuilder();
    164
    165????????????????//定義要顯示的頁碼最大于最小值
    166????????????????int?pageStart?=?Math.Max(pageNum?-?3,?Math.Min(MaxPageNum?-?8,?1));
    167????????????????int?pageEnd?=?Math.Min(MaxPageNum,?pageStart?+?8);
    168????????????????pageStart?=?(pageEnd?-?8?>?0)???(pageEnd?-?8)?:?1;
    169
    170????????????????for?(int?i?=?pageStart;?i?<=?PageNum;?i++)
    171????????????????{
    172????????????????????sb.AppendFormat(pageNumLinkString,?tbPageNum.ClientID,?i,?btnSplitPostBack.ClientID.Replace('_',?'$'));
    173????????????????}

    174????????????????sb.AppendFormat("{0}",?PageNum?+?1);
    175????????????????for?(int?i?=?PageNum?+?2;?i?<=?pageEnd;?i++)
    176????????????????{
    177????????????????????sb.AppendFormat(pageNumLinkString,?tbPageNum.ClientID,?i,?btnSplitPostBack.ClientID.Replace('_',?'$'));
    178????????????????}

    179
    180????????????????lbPageNum.Text?=?sb.ToString();
    181????????????}

    182????????}

    183
    184????????/**////?<summary>
    185????????///??首頁
    186????????///?</summary>
    187????????///?<param?name="sender"></param>
    188????????///?<param?name="e"></param>

    189????????protected?void?lkbtnFirst_Click(object?sender,?EventArgs?e)
    190????????{
    191????????????SetSplitPage(0,?PerPageShowCount);
    192????????}

    193
    194????????/**////?<summary>
    195????????///?上一頁
    196????????///?</summary>
    197????????///?<param?name="sender"></param>
    198????????///?<param?name="e"></param>

    199????????protected?void?lkbtnPre_Click(object?sender,?EventArgs?e)
    200????????{
    201????????????SetSplitPage(PageNum?-?1,?PerPageShowCount);
    202????????}

    203????????/**////?<summary>
    204????????///?下一頁
    205????????///?</summary>
    206????????///?<param?name="sender"></param>
    207????????///?<param?name="e"></param>

    208????????protected?void?lkbtnNext_Click(object?sender,?EventArgs?e)
    209????????{
    210????????????SetSplitPage(PageNum?+?1,?PerPageShowCount);
    211????????}

    212????????/**////?<summary>
    213????????///?末頁
    214????????///?</summary>
    215????????///?<param?name="sender"></param>
    216????????///?<param?name="e"></param>

    217????????protected?void?lkbtnLast_Click(object?sender,?EventArgs?e)
    218????????{
    219????????????SetSplitPage(MaxPageNum?-?1,?PerPageShowCount);
    220????????}

    221
    222????????/**////?<summary>
    223????????///?提交信息
    224????????///?</summary>
    225????????///?<param?name="sender"></param>
    226????????///?<param?name="e"></param>

    227????????protected?void?btnSplitPostBack_Click(object?sender,?EventArgs?e)
    228????????{
    229????????????SetSplitPage(int.Parse(tbPageNum.Text)?-?1,?PerPageShowCount);
    230????????}

    231}

    232

    使用的時候,把這個放到頁面中,在頁面的Page_load事件中加載事件中就可以了
    調用代碼
    ?1protected?void?Page_Load(object?sender,?EventArgs?e)
    ?2????????{
    ?3????????????SplitPage1.SplitPaging?+=?new?EventHandler<SplitEventArgs>(SplitPage1_SplitPaging);
    ?4????????}

    ?5//頁面回調事件
    ?6void?SplitPage1_SplitPaging(object?sender,?WebSite.Admin.Control.SplitEventArgs?e)
    ?7????????{
    ?8????????????LoadDataInfo(e.CurrentPage,?e.PerPageShowCount);
    ?9????????????//設置分頁相關信息
    10????????????SplitPage1.SetSplitPageInfo(newPageNum,?PageCount);
    11????????}

    中國特色沒有代碼下載。 posted on 2008-06-16 16:44 艾飛 閱讀(...) 評論(...) 編輯 收藏

    轉載于:https://www.cnblogs.com/Airfeeling/archive/2008/06/16/1223156.html

    總結

    以上是生活随笔為你收集整理的简单的分页控件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。