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

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

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

    posts - 495,comments - 227,trackbacks - 0
    Asp.net提供了三個功能強大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分頁功能。相對DataGrid,DataList和Repeater控件具有更高的樣式自定義性,所以很多時候我們喜歡使用DataList或Repeater控件來顯示數(shù)據(jù)。


    ?實現(xiàn)DataList或Repeater控件的分頁顯示有幾種方法:
    ?1、寫一個方法或存儲過程,根據(jù)傳入的頁數(shù)返回需要顯示的數(shù)據(jù)表(DataTable)
    ?2、使用PagedDataSource類

    ?????本篇文章主要說怎么使用PagedDataSource類實現(xiàn)DataList和Repeater控件的分頁顯示。DataGrid控件內(nèi)部也使用了PagedDataSource類,PagedDataSource?類封裝?DataGrid?控件的屬性,這些屬性使?DataGrid?可以執(zhí)行分頁。

    ?PagedDataSource?類的部分公共屬性:
    ?AllowCustomPaging??獲取或設(shè)置指示是否啟用自定義分頁的值。?
    ?AllowPaging???獲取或設(shè)置指示是否啟用分頁的值。?
    ?Count????獲取要從數(shù)據(jù)源使用的項數(shù)。?
    ?CurrentPageIndex???獲取或設(shè)置當前頁的索引。?
    ?DataSource???獲取或設(shè)置數(shù)據(jù)源。?
    ?DataSourceCount???獲取數(shù)據(jù)源中的項數(shù)。?
    ?FirstIndexInPage???獲取頁中的第一個索引。?
    ?IsCustomPagingEnabled??獲取一個值,該值指示是否啟用自定義分頁。?
    ?IsFirstPage???獲取一個值,該值指示當前頁是否是首頁。?
    ?IsLastPage???獲取一個值,該值指示當前頁是否是最后一頁。?
    ?IsPagingEnabled???獲取一個值,該值指示是否啟用分頁。?
    ?IsReadOnly???獲取一個值,該值指示數(shù)據(jù)源是否是只讀的。?
    ?IsSynchronized???獲取一個值,該值指示是否同步對數(shù)據(jù)源的訪問(線程安全)。?
    ?PageCount???獲取顯示數(shù)據(jù)源中的所有項所需要的總頁數(shù)。?
    ?PageSize???獲取或設(shè)置要在單頁上顯示的項數(shù)。?
    ?VirtualCount???獲取或設(shè)置在使用自定義分頁時數(shù)據(jù)源中的實際項數(shù)。?

    ??????這些屬性是否和DataGrid的屬性很相似?沒錯,DataGrid控件就是使用PagedDataSource類來實現(xiàn)數(shù)據(jù)分頁顯示的?。下面舉個使用PagedDataSource類實現(xiàn)DataList和Repeater控件的分頁顯示的例子:
    程序代碼 程序代碼

    public?void?Page_Load(Object?src,EventArgs?e)?
    {
    OleDbConnection?objConn=new?OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;?Data?Source=c:\test.mdb");
    OleDbDataAdapter?objCommand=new?OleDbDataAdapter("select?*?from?Users",objConn);
    DataSet?ds=new?DataSet();
    objCommand.Fill(ds);

    //對PagedDataSource?對象的相關(guān)屬性賦值
    PagedDataSource?objPds?=?new?PagedDataSource();
    objPds.DataSource?=?ds.Tables[0].DefaultView;
    objPds.AllowPaging?=?true;
    objPds.PageSize?=?5;
    int?CurPage;

    //當前頁面從Page查詢參數(shù)獲取
    if?(Request.QueryString["Page"]?!=?null)
    ??CurPage=Convert.ToInt32(Request.QueryString["Page"]);
    else
    ??CurPage=1;

    objPds.CurrentPageIndex?=?CurPage-1;?
    lblCurrentPage.Text?=?"Page:?"?+?CurPage.ToString();

    if?(!objPds.IsFirstPage)
    ??lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath?+?"?Page="?+?Convert.ToString(CurPage-1);

    if?(!objPds.IsLastPage)
    ??lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+?"?Page="?+?Convert.ToString(CurPage+1);

    //把PagedDataSource?對象賦給Repeater控件
    Repeater1.DataSource=objPds;
    Repeater1.DataBind();
    }

    這樣就可以很簡單的實現(xiàn)DataList和Repeater控件的分頁顯示。但這樣做有個缺點,就是每次都要把所有頁的數(shù)據(jù)Select出來,DataGrid也是這樣,這樣會降低一點效率(大多時候體會不出來差別);如果使用第一種方法就可以只Select出當前頁的數(shù)據(jù)(實現(xiàn)方法請查看有關(guān)文章)
    posted on 2007-01-25 13:10 SIMONE 閱讀(1230) 評論(0)  編輯  收藏 所屬分類: .NET
    主站蜘蛛池模板: 亚洲人成电影福利在线播放| 亚洲中久无码永久在线观看同| 亚洲精品乱码久久久久久下载 | 亚洲免费在线观看| 国产成人免费片在线观看| 麻豆安全免费网址入口| 又黄又爽一线毛片免费观看| 又粗又长又爽又长黄免费视频| 亚洲AV中文无码乱人伦在线视色| 免费精品国自产拍在线播放| 狠狠亚洲狠狠欧洲2019| 久久精品视频免费看| 亚洲精品综合久久中文字幕| 青春禁区视频在线观看直播免费| 亚洲中文字幕乱码熟女在线| 国产真实伦在线视频免费观看| 日韩在线视频线视频免费网站| 亚洲最大AV网站在线观看| 亚洲精品免费视频| 亚洲AV成人影视在线观看| 国产三级免费电影| 韩日电影在线播放免费版| 亚洲综合激情视频| 女人让男人免费桶爽30分钟| 无码人妻一区二区三区免费视频| 国产亚洲人成网站观看| 97无码免费人妻超级碰碰碰碰| 羞羞漫画小舞被黄漫免费| 国产亚洲精品a在线观看app| 成人毛片免费播放| 一级有奶水毛片免费看| 亚洲伊人久久大香线蕉啊| 国产一区二区视频免费| 国产一精品一AV一免费| 亚洲一线产品二线产品| 国产亚洲精品福利在线无卡一| 日韩在线播放全免费| 男人和女人高潮免费网站| 亚洲视频一区二区三区| 亚洲A∨午夜成人片精品网站| 无码囯产精品一区二区免费|