在 ASP.NET 站點開發中,以表格形式展示數據是極為常見的需求。最傳統的做法莫過於使用 DataGrid 綁定 DataSet,但實際專案中,開發者通常會根據場景靈活選擇三種典型的表格化處理方式。
這是最普及的方式,DataGrid 與 ADO.NET 的無縫綁定確實方便。然而,其預設樣式單一,難以滿足不同專案的視覺風格需求;若要在 DataGrid 中實現個性化渲染,往往需要重寫 Render 方法,開發維護成本極高。
DataSet 綁定 DataGrid 的底層原理其實就是 XML 與 XSL 的轉換。開發者可以完全掌控 XSL 樣式表,設計出任意風格的表格輸出,靈活度極高。下圖展示了一個透過 XSL 渲染的表格範例:

這種方式看似「笨拙」,但在解決特定性能瓶頸或極度客製化佈局時卻奇效。以下代碼示範如何在後端動態構建上圖所示的表格:
1<table style="WIDTH: 100%; BORDER-COLLAPSE: collapse; HEIGHT: 10px">
2 <tr>
3 <td align="center">
4 <TABLE id="tblContainer" class="MsoNormalTable" style="WIDTH: 380px; BORDER-COLLAPSE: collapse; HEIGHT: 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="宋體">綜合管理部人員職務</FONT></STRONG></FONT></P>
9 </td>
10 </tr>
11 <tr>
12 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>人員姓名</STRONG></FONT></td>
13 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>部門職務</STRONG></FONT></td>
14 </tr>
15 </TABLE>
16 </td>
17 </tr>
18 </table>
後端透過 HtmlTable、HtmlTableRow、HtmlTableCell 等控件動態添加行與儲存格,並將 Label 控件置入儲存格,實現數據的精確佈局。核心邏輯如下:
private void GetTeamMember(string AuditItemID)
{
// ... 獲取數據 ...
foreach(PersonRole pr in al)
{
HtmlTableCell cell = new HtmlTableCell { Align = "Center" };
Label lbl = new Label { Text = pr.name, Font = { Size = 9 } };
cell.Controls.Add(lbl);
HtmlTableRow row = new HtmlTableRow();
row.Cells.Add(cell);
HtmlTableCell cellRole = new HtmlTableCell { Align = "Center" };
Label lblRole = new Label { Text = pr.role, Font = { Size = 9 } };
cellRole.Controls.Add(lblRole);
row.Cells.Add(cellRole);
tblContainer.Rows.Add(row);
}
}
三種方式各有優劣:DataGrid 開發快但難客製化;XML+XSL 風格可控但需 XSLT 基礎;直接繪製 HTML 最靈活、性能最優,適合高度定製或大數據量場景。實際專案中常混合使用,關鍵在於根據業務場景做權衡。