資料分頁顯示(二)

2021-07-08 08:59:40 字數 1542 閱讀 8114

三、伺服器查詢出資料,發往前端

1、首先前端呼叫了伺服器的某個函式,比如叫:

user_getpagedlist(int pageindex, int pagesize, dictionarycondition, string orderby)

在這裡需要傳遞四個引數:第幾頁、每頁記錄條數、查詢條件、排序條件。

2、然後伺服器要處理這傳過來的四個引數:

a、根據 condition 拼接查詢條件;

b、把 orderby 也併入查詢條件;

c、得出查詢結果的記錄總條數;

d、得出查詢結果的總頁數;

最後拼接出的查詢sql語句如下示例:

with tmp as(

select row_number() over (order by userage desc) as sortnum,a.id,a.username,a.userage,a.hashouse,a.userbirthday from dbo.user a with(nolock)

where 1=1 and a.[hashouse]='true'

)select * from tmp a where sortnum between @startnum and @endnum order by userage desc

上面的@startnum和@endnum是需要傳入的兩個引數,那麼最終前端顯示出的資料就是這兩個數字之間的記錄,

比如between 10 and 19,表示顯示從第10條到第19條資料。

然而還有一種特殊情況,那就是如果不想分頁,直接將所有資料顯示到第一頁,則前端傳過來的 pageindex 和 pagesize 都為0,

那麼sql語句裡就不要有查詢從哪條到哪條的條件,而且伺服器端**要這麼處理:

if (pageindex == 0 && pagesize == 0)

得到的資料:

public override pagedlistuser_getpagedlist(int pageindex, int pagesize, dictionarycondition, string orderby)

然後這樣的資料還不能直接返回到前端,還需要做處理:

pagedlistpg = userbll.user_getpagedlist(pageindex, pagesize, condition, orderby);

jsonresult.obj = new pagedlist(pg.list, pg.pageindex, pg.pagesize, pg.totalcount);

return jsonresult.tojson(true);

從pagedlist到pagedlist的轉換用到了乙個自定義類pagedlist.cs,關於pagedlist.cs的**請看下回分解...

分頁顯示資料

oracle的分頁查詢可以利用rowid偽列。db2的分頁查詢可以利用row number over 聚合函式。mysql有limit。access彷彿先天缺陷,僅提供了top n。那如何利用top來實現分頁查詢呢?假設在access中有表t1 create table t1 tc1 varchar...

php mysql資料分頁顯示

建立連線 mysqli newmysqli localhost root message if mysqli connect errno mysqli query set names utf8 編碼強制轉換,否則中文顯示亂碼 獲取當前頁數 if isset get page else 每頁數量 pa...

repeater 分頁顯示資料

表名 chinastates 控制項 repeater 查詢 da public class chinastatesda private dataclassesdatacontext context 構建linq public chinastatesda context new dataclasse...