Kontrol datagrid terlalu terkenal, jadi saya menggunakan banyak hal sebelumnya. Ini terutama tentang kontrol distalis.
Kontrol distalist sebenarnya sangat kuat. Persimpangan Persimpangan
Memang sakit kepala.
Namun, distalist tidak menyediakan fungsi paging yang dibangun, tetapi itu tidak berarti bahwa kita tidak dapat menggunakan kontrol distalist untuk mengimplementasikan paging.
Di bawah ini adalah semua kode asli.
(Program ini diuji di bawah .NET Framework Beta 2)
< % @ halaman bahasa = C# %>
< % @ Impor namespace = system.data %>
< % @ Impor namespace = system.data.oledb %>
<bahasa skrip = c# runat = server>
/*
Buat dengan pisau terbang
http://www.aspcn.com
2001-7-25 01:44
Dukung .NET Framework Beta 2
*/
OLEDBConnection Myconn;
int pageSize, RecordCount, PageCount, CurrentPage;
public void page_load (objek SRC, EventArgs E)
{{
// Atur halaman
halaman = 10;
// Sambungkan
String myconnstring = penyedia = microsoft.jet.oledb.4.0;
MyConn = OLEDBConnection baru (MyConnString);
myconn.open ();
// Permintaan eksekusi pertama
if (! page.ispostback)
{{
listBind ();
SurrentPage = 0;
Viewstate [pageIndex] = 0;
// Berapa banyak catatan yang dihitung secara total
RecordCount = CalculAtecord ();
lblrecordcount.text = recordcount.toString ();
// Berapa banyak halaman yang dihitung secara total
pagecount = RecordCount/Pagesize;
lblpagecount.text = pagecount.toString ();
Viewstate [pagecount] = pagecount;
}
}
// Hitung berapa banyak catatan yang ada secara total
Public int calcultecord ()
{{
int intcount;
string strcount = pilih count (*) sebagai co dari skor;
OLEDBCommand MyComm = OLEDBCommand baru (Strcount, MyConn);
OLEDBDataReader DR = myComm.executereader ();
if (dr.read ()))
{{
intcount = int32.parse (dr [co] .toString ());
}
kalau tidak
{{
intcount = 0;
}
dra.close ();
Return intcount;
}
icollection createSource ()
{{
int startIndex;
// Atur alamat awal impor
startIndex = currentpage*halaman;
string strsel = pilih * dari skor;
dataset ds = dataset baru ();
OLEDBDATADAPTER myAdapter = oledbdataAdapter baru (strsel, myconn);
myAdapter.fill (DS, startIndex, pageSize, skor);
Return ds.tables [skor] .defaultView;
}
public void listBind ()
{{
SCORE.DataSource = createSource ();
score.databind ();
lbnnextpage.enabled = true;
lbnprevpage.enabled = true;
if (currentPage == (pagecount-)) lbnnextpage.enabled = false;
if (currentPage == 0) lbnprevPage.enabled = false;
lblCurrentPage.Text = (SurrentPage+1) .tring ();
}
public void page_onclick (pengirim objek, CommandEventArgs e)
{{
CurrentPage = (int) viewState [pageIndex];
pagecount = (int) viewstate [pagecount];
string cmd = e.comandName;
// menilai CMD untuk menentukan arah halaman yang berputar
Switch (CMD)
{{
Kasus Berikutnya:
if (currentpage <(pagecount-)) currentPage ++;
Merusak;
Kasus Sebelumnya:
if (currentpage> 0) currentPage-;
Merusak;
}
ViewState [pageIndex] = currentPage;
listBind ();
}
</script>
<Html>
<head>
<title> </title>
</head>
<body>
<Form runat = server>
Bersama <asp: label id = lblrecordcount forecolor = red runat = server />
Arus adalah <asp: label id = lblcurrentpage forecolor = red runat = server /> /<asp: label id = lblpageCount forecolor = red raunat = server />>
<ASP: ID Datalist = skor runat = server
headstyle-backcolor =#aaaadd
BERGERBITANITEMSTYLE-BACKCOLOR = GAINSBORO
EdititemStyle-BackColor = kuning
"
<emtemplate>
Nama: < %# databinder.eval (container.dataitem, name) %>
<asp: linkbutton id = btnselect text = editor commandName = edit runat = server />
</TipTemplate>
</sh: datalis>
<asp: linkbutton id = lbnprevpage text = Page sebelumnya commandName = prev onCommand = page_onClick runat = server />
<asp: linkbutton id = lbnnextpage text = next commandName = next onCommand = page_onClick runat = server />
</form>
</body>
</html>
Hasil berjalan seperti yang ditunjukkan di atas :)
Ketika Anda menulis program, yang paling penting adalah memikirkannya sendiri. Pertanyaannya terlalu sederhana, belum ada yang mau menjawab.
Berpikir banyak dan memeriksa informasi benar -benar mendapatkan.