ListView实现分页
ListView實現分頁有兩種方式,第一種通過DataPager控件。第二種是編寫sql語句實現。第一種是一次性將數據從數據庫中取出。
只適用于數據量小的分頁。
1、通過DataPager控件實現分頁:
1、右擊項目-添加新項-添加數據集
2.將需要的表拖進數據集
3.在數據集里可以添加查詢語句。
4.在頁面中添加ObjectDataSource控件、DataPager控件、ListView控件。將數據集綁定給ObjectDataSource控件,
在將ListViw控件的DataSourceID設置為ObjectDataSource的id。然后設置DataPager控件的PagedControlID為listView的id。這樣就可以綁定給ListView控件了。當然在ListView控件中選擇分頁也會自動在內部創建DataPage控件。
這樣實現的分頁是查詢出表中所有的數據,并不適合數據量大分頁。
第二種通過編寫sql語句實現:
1.在數據集中添加表,在添加查詢,查詢語句為:
select * from (select *,Row_number() over(order by id) rownum from gooodsInfo) t where t.rownum > @startRowIndex and t.rownum <= @startRowIndex + @maximumRows.ps:Row_number() 是SqlServer中的內置函數,作用是獲取結果集的序號 ?over(order by id) 是根據id來排序。Row_number()必須結合over來使用。rownum是別名
上面使用子查詢的原因是如果是select * from ?表名 ?where 字段=... ?這樣的寫法,這里的字段是從表里去拿的。如果你要用序號,表里是沒有序號的,是會報列名無效的。所以必須用子查詢。
上面的兩個參數@startRowIndex 表示開始的行數,@maximumRows表示本頁的行數,這里的參數名稱不能隨便命名的。這里的參數必須跟ObjectDataSource
中的startRowIndex參數和maximumRows相同。方法命名為GetPagedData。
然后在添加sql語句。選擇select(返回單個值)。這個方法用于返回表中有多少行。
先按照正常的流程配置ObjectDataSource,讓ListView自動生成Template,再修改ObjectDataSource的EnablePaging = “True”,SelectCountMethod設置為取得行數的方法。 然后在把SelectMethod 設置為上面添加的GetPagedData。?
DataPager的PageSize屬性為一頁的條數。DataPager中按鈕顯示風格由Fields中的字段設置,可以放置多個字段,分NextPreviousPagerField (上一頁、下一頁、首頁、末頁等)、NumericPagerField(數字頁號)、TemplatePagerField用模板自定義。在代碼中的Fields中修改。 NextPreviousPageField主要屬性:ButtonCssClass: 按鈕的樣式;ButtonType,按鈕渲染成什么 (Button按鈕、Link超鏈接、Image圖片); FirstPageImageUrl,【第一頁】按鈕圖片地址; FirstPageText 【第一頁】 按鈕文本 showFirstButton,是否顯示【第一頁】 NumericPageField主要屬性:ButtonCount,數字的個數;按鈕渲染成什么(Button、Link、Image);CurrentPageLabelCssClass當前頁文本的樣式:NumericButtonCSSClass數字按鈕的樣式。?
轉載于:https://www.cnblogs.com/sjyzz/p/7729675.html
總結
以上是生活随笔為你收集整理的ListView实现分页的全部內容,希望文章能夠幫你解決所遇到的問題。