Al desarrollar proyectos de sitios ASP.NET, los datos suelen mostrarse en forma de tabla. El método más utilizado es probablemente la forma en que DataGrid vincula los datos del DataSet. En los proyectos de software en los que he trabajado, existen tres formas típicas de procesar datos tabulares.
1. DataGrid vincula la fuente de datos. Este método es el que más se utiliza, pero el método de enlace perfecto entre DataGrid y ADO.NET sigue siendo molesto. El estilo uniforme de DataGrid es difícil de adaptar a los estilos especiales de diferentes proyectos, y la personalización en DataGrid será muy problemática.
2. Utilice XML (datos) + XSL (hoja de estilos). Como puede comprender, el mecanismo de implementación para vincular DataSet a DataGrid no es más que esto. Como se muestra en la figura, para implementar dicha tabla, los desarrolladores pueden diseñar el estilo XSL tanto como quieran.
3. Dibuje datos directamente en HTML. Este método es un poco tosco, pero a veces es muy efectivo. Veamos primero el código de implementación. El siguiente código implementa la tabla que se muestra en la figura anterior.
1<table style="ANCHO: 100%; COLAPSO DEL BORDE: colapsar; ALTO: 10px">
2 <tr>
3 <td align="centro">
4 <TABLE id="tblContainer" class="MsoNormalTable" style="ANCHO: 380px; BORDE-COLLAPSE: contraer; ALTO: 10px"
5 cellSpacing="0" cellPadding="6" border="1" runat="servidor" bordercolor="#99cccc">
6 <tr>
7 <td colspan="2" align="centro">
8 <P><FONT size="3"><STRONG><FONT face="宋体">Puestos de personal del Departamento de Gestión General</FONT></STRONG></FONT></P>
9</td>
10</tr>
11 <tr>
12 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>Nombre del personal</STRONG></FONT></td>
13 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>Posición del departamento</STRONG></FONT></td>
14</tr>
15 </TABLA>
16 </td>
17</tr>
18 </tabla>
Utilice directamente el método Agregar de ASP.NET WebControls para agregar la etiqueta a la celda HTML.
1 clase pública WebForm2: System.Web.UI.Page
2 {
3
4 estructura PersonaRole
5 {
6 nombre de cadena pública;
7 funciones de cadena pública;
8}
9
10 protegido System.Web.UI.HtmlControls.HtmlTable tblContainer;
11 cadena pública strAuditItemID = "A899B637-AC47-42EB-9B61-A61C9C880DDC";
12 Page_Load vacío privado (remitente del objeto, System.EventArgs e)
13 {
14 //Pon el código de usuario aquí para inicializar la página
15 si (Request.QueryString["AuditItemID"]! = nulo)
16 {
17 strAuditItemID = Request.QueryString["AuditItemID"].ToString();
18}
19
20 GetTeamMember(strAuditItemID);
veintiuno }
Veintidós
23 Código generado por Web Forms Designer#región Código generado por Web Forms Designer
24 anulación del vacío protegido OnInit (EventArgs e)
25 {
26 //
27 // CODEGEN: Esta llamada es requerida por el diseñador de formularios web ASP.NET.
28 //
29 InicializarComponente();
30 base.OnInit(e);
31}
32
33 /**//// <resumen>
34 /// Designer admite los métodos requeridos; no use el editor de código para modificar
35 /// El contenido de este método.
36 /// </summary>
37 vacío privado InitializeComponent()
38 {
39 this.Load += nuevo System.EventHandler(this.Page_Load);
40
41 }
42 #regiónfinal
43
44 GetTeamMember privado vacío (cadena AuditItemID)
45 {
46 cadenas strMaster, strTeamLeader, strPM;
47 ArrayList al = GetTeamMemberName(AuditItemID, fuera strMaster, fuera strTeamLeader, fuera strPM);
48
49 foreach(PersonRole pr en al)
50 {
51 celda HtmlTableCell=nueva HtmlTableCell();
52 celda.Align = "Centro";
53 Etiqueta lbl = nueva Etiqueta();
54 lbl.Texto = pr.nombre;
55 lbl. Tamaño de fuente = 9;
56
57 celda.Controles.Agregar(lbl);
58 HtmlTableRow fila=nueva HtmlTableRow();
59 fila.Celdas.Agregar(celda);
60
61 HtmlTableCell cellRole = nuevo HtmlTableCell();
62 cellRole.Align = "Centro";
63 Etiqueta lblRole = nueva Etiqueta();
64 lblRole.Text = pr.rol;
65 lblRole.Font.Size = 9;
66
67 cellRole.Controls.Add(lblRole);
68 fila.Celdas.Add(cellRole);
69
70 tblContainer.Rows.Add(fila);
71 }
72 }
73
74 ArrayList privado GetTeamMemberName (cadena AuditItemID, cadena de salida strMasterName, cadena de salida strTeamLeader, cadena de salida strPM)
75 {
76 ArrayList al = nueva ArrayList();
77 strMasterName = "Ninguno";
78 strTeamLeader = "Ninguno";
79 strPM = "Ninguno";
80
81 PersonaRole pr;
82 pr.nombre = "Zhang San";
83 pr.role = "Gerente General";
84 al.Add(pr);
85
86 pr.name = "李思";
87 pr.role = "Subdirector general";
88 al.Add(pr);
89
90 pr.nombre = "王五";
91 pr.role = "miembro de la sección";
92 al.Add(pr);
93
94 pr.nombre = "Zhao Liu";
95 pr.role = "miembro de la sección";
96 al.Add(pr);
97
98 retorno al;
99 }
100}
Al dibujar una página, el método que se debe utilizar es una cuestión de opinión y sabiduría. En el desarrollo de sitios web, estos tres métodos tienen aplicaciones típicas, especialmente el tercer método, descubrí que es muy eficaz para resolver los problemas de rendimiento del procesamiento de algunas páginas. Además, el control de la página de diseño se puede automatizar y el procesamiento personalizado es más fácil que reescribir Render en DataGrid.