Le contrôle DataGrid est trop célèbre, j'ai donc utilisé beaucoup de choses auparavant. Il s'agit principalement du contrôle des données.
Le contrôle du datalist est en fait très puissant. Intersection Intersection
C'est en effet un mal de tête.
Cependant, le datalist ne fournit pas de fonction de pagination construite, mais cela ne signifie pas que nous ne pouvons pas utiliser le contrôle du datalist pour implémenter le paginage.
Vous trouverez ci-dessous tout le code d'origine.
(Ce programme est testé sous le .NET Framework Beta 2)
<% @ Page Language = C #%>
<% @ Importer namespace = System.Data%>
<% @ Importer namespace = System.Data.oledb%>
<Script Language = C # runat = Server>
/ *
Créer par un couteau volant
http://www.aspcn.com
2001-7-25 01:44
Prise en charge .NET Framework Beta 2
* /
Oledbconnection MyConn;
int pageSize, enregistreCount, pageCount, currentPage;
public void page_load (objet Src, EventArgs e)
{{
// définir la pages
pagesize = 10;
// Connecter
String MyConnString = Provider = Microsoft.Jet.oledb.4.0; Data Source = + Server.Mappath (.) + .. // db1.mdb ;;
myConn = new oledbconnection (myConnString);
myConn.open ();
// la première demande d'exécution
if (! Page.ispostback)
{{
listBind ();
CurrentPage = 0;
ViewState [PageIndex] = 0;
// combien d'enregistrements sont calculés au total
RecordCount = CalculateCord ();
lblRecordCount.Text = RecordCount.ToString ();
// combien de pages sont calculées au total
pageCount = recordCount / pagesize;
lblpageCount.Text = pageCount.ToString ();
ViewState [PageCount] = PageCount;
}
}
// Calculer le nombre d'enregistrements au total
Public int calculcord ()
{{
int intCount;
String strCount = select count (*) comme co de score;
Oledbcommand mycomm = new oledbcommand (strCount, myConn);
OledbdataReader dr = myComm.ExecuTeReader ();
if (Dr.Read ()))
{{
intCount = int32.parse (dr [co] .toString ());
}
autre
{{
intCount = 0;
}
dra.close ();
Return intCount;
}
icollection CreateSource ()
{{
int startIndex;
// Définit l'adresse de départ de l'importation
startIndex = currentPage * pagesize;
String StrSl = SELECT * From Score;
DataSet ds = new DataSet ();
Oledbdatadapter myAdapter = new OledBDataAdapter (Strsel, myConn);
MyAdapter.fill (DS, startIndex, PageSize, Score);
Return ds.tables [score] .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 = (currentPage + 1) .tring ();
}
public void Page_OnClick (expéditeur d'objet, CommandEventArgs e)
{{
CurrentPage = (int) ViewState [PageIndex];
pageCount = (int) ViewState [PageCount];
String cmd = e.comandName;
// Jugez CMD pour déterminer la direction de la page tournante
Commutateur (CMD)
{{
Cas Suivant:
if (currentPage <(pageCount-)) CurrentPage ++;
Casser;
Cas Précédent:
if (currentPage> 0) currentPage-;
Casser;
}
ViewState [PageIndex] = CurrentPage;
listBind ();
}
</cript>
<html>
<adal>
<Title> </Title>
</ head>
<body>
<Form runat = server>
Ensemble <asp: étiquette id = lblRecordCount perfecolor = red runat = server />
Le courant est <asp: étiquette id = lblcurrentPage perfecolor = red runat = server /> / <sp: étiquette id = lblpageCount avantage = red raunat = server />
<Asp: datalist id = score runat = serveur
Headstyle-BackColor = # aaaadd
alternativeItemStyle-BackColor = Gainsboro
EditItemStyle-BackColor = Yellow
"
<TemTemplate>
Nom: <% # databinder.eval (contener.dataitem, nom)%>
<asp: linkButton id = btnSelect text = editor commandName = edit runat = server />
</ itemTemplate>
</ ASP: Datalist>
<asp: linkButton id = lbnprevpage text = page précédente CommandName = prev oncommand = page_onclick runat = server />
<asp: linkButton id = lbnnextpage text = next commandName = next oncommand = page_onclick runat = server />
</ form>
</docy>
</html>
Les résultats en cours d'exécution sont comme indiqué ci-dessus :)
Lorsque vous écrivez le programme, la chose la plus importante est d'y penser vous-même. La question est trop simple, personne n'est encore disposé à répondre.
Penser beaucoup et vérifier les informations est vraiment gagné.