Lors du développement de projets de sites ASP.NET, les données sont souvent affichées sous forme de tableau. La méthode la plus couramment utilisée est probablement la manière dont DataGrid lie les données DataSet. Dans les projets logiciels sur lesquels j'ai travaillé, il existe trois manières typiques de traiter les données tabulaires.
1. DataGrid lie la source de données. Cette méthode est la plus utilisée, mais la méthode de liaison parfaite entre DataGrid et ADO.NET est toujours ennuyeuse. Le style DataGrid uniforme est difficile à adapter aux styles particuliers des différents projets, et la personnalisation sur DataGrid sera très gênante.
2. Utilisez XML (données) + XSL (feuille de style). Comme vous pouvez le comprendre, le mécanisme d'implémentation de liaison de DataSet à DataGrid n'est rien de plus. Comme le montre la figure, pour implémenter un tel tableau, les développeurs peuvent concevoir le style XSL autant qu'ils le souhaitent.
3. Dessinez des données directement au format HTML. Cette méthode est un peu grossière, mais elle est parfois très efficace. Examinons d’abord le code d’implémentation. Le code suivant implémente le tableau présenté dans la figure ci-dessus.
1<table style="WIDTH : 100 % ; BORDER-COLLAPSE : réduire ; HEIGHT : 10px">
2 <tr>
3 <td align="center">
4 <TABLE id="tblContainer" class="MsoNormalTable" style="WIDTH : 380px ; BORDER-COLLAPSE : réduire ; HAUTEUR : 10px"
5 cellSpacing="0" cellPadding="6" border="1" runat="server" bordercolor="#99cccc">
6 <tr>
7 <td colspan="2" align="center">
8 <P><FONT size="3"><STRONG><FONT face="宋体">Postes du personnel du département de la direction générale</FONT></STRONG></FONT></P>
9 </td>
10 </tr>
11
12 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>Nom du personnel</STRONG></FONT></td>
13 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>Position du département</STRONG></FONT></td>
14 </tr>
15 </TABLE>
16 </td>
17 </tr>
18 </table>
Utilisez directement la méthode Add des WebControls ASP.NET pour ajouter l’étiquette à la cellule HTML.
1classe publique WebForm2 : System.Web.UI.Page
2 {
3
4 structPersonRole
5 {
6 nom de chaîne publique ;
7 rôles de chaîne publique ;
8}
9
10 protégé System.Web.UI.HtmlControls.HtmlTable tblContainer ;
11 chaîne publique strAuditItemID = "A899B637-AC47-42EB-9B61-A61C9C880DDC" ;
12 Page_Load vide privé (expéditeur d'objet, System.EventArgs e)
13 {
14 //Mettez le code utilisateur ici pour initialiser la page
15 if(Request.QueryString["AuditItemID"] != null)
16 {
17 strAuditItemID = Request.QueryString["AuditItemID"].ToString();
18}
19
20 GetTeamMember(strAuditItemID);
vingt-et-un }
vingt-deux
23 Code généré par le Web Forms Designer#region Code généré par le Web Forms Designer
24 remplacer le void protégé OnInit (EventArgs e)
25 {
26 //
27 // CODEGEN : Cet appel est requis par le concepteur ASP.NET Web Forms.
28 //
29 InitializeComponent();
30 base.OnInit(e);
31}
32
33 /**//// <résumé>
34 /// Designer prend en charge les méthodes requises - n'utilisez pas l'éditeur de code pour modifier
35 /// Le contenu de cette méthode.
36 /// </summary>
37 vide privé InitializeComponent()
38 {
39 this.Load += new System.EventHandler(this.Page_Load);
40
41 }
42 #endregion
43
44 vide privé GetTeamMember (string AuditItemID)
45 {
46 chaînes strMaster, strTeamLeader, strPM ;
47 ArrayList al = GetTeamMemberName (AuditItemID, hors strMaster, hors strTeamLeader, hors strPM);
48
49 foreach (PersonRole pr dans al)
50 {
51 HtmlTableCell cellule=nouveau HtmlTableCell();
52 cell.Align = "Centre" ;
53 Étiquette lbl = new Étiquette();
54 lbl.Text = pr.name;
55 lbl.Font.Size = 9 ;
56
57 cell.Controls.Add(lbl);
58 Ligne HtmlTableRow=new HtmlTableRow();
59 lignes.Cells.Add(cellule);
60
61 HtmlTableCell cellRole = new HtmlTableCell();
62 cellRole.Align = "Centre" ;
63 Étiquette lblRole = new Étiquette();
64 lblRole.Text = pr.role;
65 lblRole.Font.Size = 9 ;
66
67 cellRole.Controls.Add(lblRole);
68 lignes.Cells.Add(cellRole);
69
70 tblContainer.Rows.Add(ligne);
71 }
72 }
73
74 ArrayList privé GetTeamMemberName (chaîne AuditItemID, chaîne strMasterName, chaîne strTeamLeader, chaîne strPM)
75 {
76 ArrayList al = new ArrayList();
77 strMasterName = "Aucun" ;
78 strTeamLeader = "Aucun" ;
79 strPM = "Aucun" ;
80
81 PersonRole pr;
82 pr.name = « Zhang San » ;
83 pr.role = « Directeur Général » ;
84 al.Add(pr);
85
86 pr.name = "李思";
87 pr.role = « Directeur Général Adjoint » ;
88 al.Add(pr);
89
90 pr.name = "王五";
91 pr.role = "membre de la section" ;
92 al.Add(pr);
93
94 pr.nom = "Zhao Liu";
95 pr.role = "membre de la section" ;
96 al.Add(pr);
97
98 retour al;
99 }
100}
Lorsque vous dessinez une page, la méthode à utiliser est une question d’opinion et de sagesse. Dans le développement de sites Web, ces trois méthodes ont des applications typiques, en particulier la troisième méthode que j'ai trouvée très efficace pour résoudre les problèmes de performances de certains traitements de pages. De plus, le contrôle de la page de mise en page peut être automatisé et le traitement personnalisé est plus simple que la réécriture de Render dans DataGrid.