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(返回單個值)。這個方法用於返回表中有多少行。