Membuat paging dari suatu query di SQL Server (bisa juga yg menggunakan join dan melibatkan tabel lain)
Misalnya saya memiliki query
Select colA1, colA2, colA3 from tabelA
Untuk dibuat paging, harus dipilih suatu kolom untuk dasar
pengurutannya (misalkan colA1) maka menjadi
With PagingList
as
(SELECT
ROW_NUMBER() OVER (ORDER BY List.colA1 ASC
) as [Number],[List].* FROM
(Select colA1,
colA2, colA3 from tabelA
) as List
)
Select colA1,
colA2, colA3 from PagingList
where [Number]
between #range1# and #range2#
Jika melibatkan tabel lain juga bisa, bentuknya menjadi
seperti ini: (misalkan dasar urut berdasarkan colA1)
With PagingList as (ROW_NUMBER() OVER (ORDER BY List.colA1
ASC
) as [Number], [List].* from
( select colA1, colB1, colC1 from tabelA,tabelB,tabelC where
colA2=colB2 and colB3=colC2
) as Gabungan
Select colA1, colB1, colC1 from Gabungan
Nah #range1# dan #range2# nanti diisi dengan angka, misalkan
kita ingin menampilkan record dari row 1 sampai 10, 11 sampai 20, 21 sampai 30.
#range1# dan #range2# disini akan menjadi parameter nantinya di SQL. Dalam
paging kita mengenal yg namanya pageindex dan pagesize. Row 1 sampai 10 pageindex-nya
adalah 1 (halaman pertama) dan pagesizenya=10.
Nilai pagepointer (disebut pageindex) dan pagesize akan
dikirim melalui parameter, untuk menentukannya, maka coding di C#-nya menjadi:
int range1,
range2;
range1 =
((pagepointer - 1) * pagesize) + 1;
range2 =
(pagepointer * pagesize);