PDA

View Full Version : Phân trang trong ASP.net



haji
27-05-2003, 16:38
nếu không dùng datagrid , thì làm sao để phân trang trong ASP.net (viết = VB.net)

mình chưa biết nhiều về VB.net , mong các bạn chỉ rõ .

zek3vil
27-05-2003, 16:56
phân trang trong ASP.NET có vẻ khó hơn nhiều so với PHP. Datagrid có hỗ trợ phân trang nhưng lại ko chính xác lắm với lại chậm nữa, để phân trang 1 cách hoàn chỉnh cần nhiều giai đoạn, bao gồm cả program CSDL. Tôi sẽ viết 1 bài viết về phân trang và sẽ gởi bạn sau, mong bạn có thể chờ.

puppy
29-05-2003, 09:10
Nếu không dùng datagrid để phân trang thì bạn có thể dùng SqlDataAdapter để phân trang. Hoăc bạn cũng có thể phân trang trong database(Dùng SQL tạo bảng tạm để phân trang)

zek3vil
30-05-2003, 16:48
Tôi đã post bài viết về phân trang lên Code Project, bạn vào đây để xem: http://codetools.com/useritems/CustomPaging.asp
Mong là đúng những gì bạn cần.

Regards,
Zeke

White_Rose
31-05-2003, 01:36
Ví dụ lấy trang thứ 5, mỗi trang 10 bài
SELECT TOP 10 [name] FROM (SELECT TOP 50 [name] FROM [tbl] ORDER BY [id] ASC) ORDER BY [id] DESC
Sau đó hiển thị theo chiều ngược của row trong recordset.
Hoặc dùng câu query sau thay thế:
SELECT [name],[id] FROM (SELECT TOP 10 [name],[id] FROM (SELECT TOP 50 [name],[id] FROM [tbl] ORDER BY [id] ASC) ORDER BY [id] DESC) ORDER BY [id] DESC

hitech
31-05-2003, 11:51
U can check this
http://aspalliance.com/das/datalistpaging.aspx
http://www.aspalliance.com/tempest/paging.aspx
Have fun :-)

MadExistence
31-05-2003, 23:02
.

haji
31-05-2003, 23:11
Ah , mình rất thích ý tưởng của WhiteRose

White_Rose
01-06-2003, 03:58
;) Nhưng nó có một nhược điểm là chỉ hoạt động chính xác nếu như bộ giá trị các trường lấy ra là unique (cứ có thêm một field là PRIMARY KEY hay UNIQUE INDEX là OK).
Nhưng với các app cần đến phân trang thì thường trong table và cả trong câu lệnh SELECT hầu như đều có field dạng này.

puppy
02-06-2003, 08:42
Hic, Ý tưởng của White_Rose hay wá. Học được một chiêu phân trang mới. Thanks

trongsaotruc
23-04-2009, 12:25
Đây là ví dụ cụ thể về phân trang không dùng đối tượng datalist hoặc datagrid dùng html đơn giản,phân trang tối ưu ,kết nối với database sqlserver 20005 trực tiếp trên mạng[timdodamat.com]
yêu cầu visual studio 2005
download tại đây
http://timdodamat.com/dayhoc/phantrang.zip
Nếu có thắc mắc liên hệ mình nhé
demo: http://timdodamat.com/dayhoc/

duongdragonxxx
24-04-2009, 09:35
@White_Rose: phân trang như thế trường hợp tốt nhất là số record cần tìm nằm ở nửa trên. Còn nếu số record cần lấy nằm ở nửa dưới, thì hiệu suất cũng sẽ giảm khá nhiều.
Hơn nữa trường hợp order by tốt nhất áp dụng cho trường number auto increment. Còn nếu như tui, tui xài ID kiểu GUID thì thế nào nhở :D

vokhanhthuy
24-04-2009, 10:02
Nếu bạn biết sử dụng LINQ thì vấn đề này không khó lắm, bạn có thể tìm hiểu thêm ví dụ ở lệnh này.
rpListCate.DataSource = obj.sp_SearchCategory(null).Skip(0).Take(5);
+ Trong đó skip(n) là bỏ qua bao nhiều trang trước đó
+ Còn take(n) là lấy bào nhiêu trang kể từ vị trí bỏ.
-->Bạn tham khảo thêm đoạn code này nhé
protected void display()
{
//--add sum record to dropdownlis, we are using 5 record in a page--
numCate = obj.tbl_Categories.Count();
if (numCate % 5 == 0)
{
sumPage = numCate / 5;
}
else
{
sumPage = (numCate / 5) + 1;
}
for (int i = 0; i < sumPage; i++)
{
drlPage.Items.Insert(i,new ListItem("Trang "+(i+1).ToString(),(i+1).ToString()));
}

//----------select 5 categroy to display on the list---------
rpListCate.DataSource = obj.sp_SearchCategory(null).Skip(0).Take(5);
rpListCate.DataBind();
}