程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET中表格化數據的方式

ASP.NET中表格化數據的方式

編輯:關於ASP.NET

在開發ASP.NET站點項目中,經常用表格化的方式顯示數據。最常用的可能就是DataGrid綁定DataSet數據的方式。在做過的軟件項目中,有3種表格化數據的典型處理方式。

1、DataGrid綁定數據源。這種方式大家用的最多,但是DataGrid與ADO.NET完美的綁定方式,還是讓人不爽。清一色的DataGrid風格很難適應不同項目的特殊風格,而且在DataGrid上做出的個性化處理也會非常的麻煩。

2、用XML(數據)+XSL(樣式單)。大家能理解,DataSet綁定到DataGrid的實現機理不過如此。如圖所示,實現這樣的一個表格,開發人員可以盡情的設計XSL的風格樣式。

3、直接將數據繪制到HTML。這個方式有些土,但有些時候卻非常有效,先看實現的代碼。下述代碼是實現上圖所示的表格。

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>
直接用ASP.NET WebControls的Add方法,將Label添加到HTML的Cell中。
1public class WebForm2 : System.Web.UI.Page
2  {
3
4    struct PersonRole
5    {
6      public string name;
7      public string role;
8    }
9
10    protected System.Web.UI.HtmlControls.HtmlTable tblContainer;
11    public string strAuditItemID = "A899B637-AC47-42EB-9B61-A61C9C880DDC";
12    private void Page_Load(object sender, System.EventArgs e)
13    {
14      // 在此處放置用戶代碼以初始化頁面
15      if(Request.QueryString["AuditItemID"] != null)
16      {
17        strAuditItemID = Request.QueryString["AuditItemID"].ToString();
18      }
19
20      GetTeamMember(strAuditItemID);
21    }
22
23    Web 窗體設計器生成的代碼#region Web 窗體設計器生成的代碼
24    override protected void OnInit(EventArgs e)
25    {
26      //
27      // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
28      //
29      InitializeComponent();
30      base.OnInit(e);
31    }
32
33    /**//// <summary>
34    /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
35    /// 此方法的內容。
36    /// </summary>
37    private void InitializeComponent()
38    {
39      this.Load += new System.EventHandler(this.Page_Load);
40
41    }
42    #endregion
43
44    private void GetTeamMember(string AuditItemID)
45    {
46      string strMaster, strTeamLeader, strPM;
47      ArrayList al = GetTeamMemberName(AuditItemID, out strMaster, out strTeamLeader, out strPM);
48
49      foreach(PersonRole pr in al)
50      {
51        HtmlTableCell cell=new HtmlTableCell();
52        cell.Align = "Center";
53        Label lbl = new Label();
54        lbl.Text = pr.name;
55        lbl.Font.Size = 9;
56
57        cell.Controls.Add(lbl);
58        HtmlTableRow row=new HtmlTableRow();
59        row.Cells.Add(cell);
60
61        HtmlTableCell cellRole = new HtmlTableCell();
62        cellRole.Align = "Center";
63        Label lblRole = new Label();
64        lblRole.Text = pr.role;
65        lblRole.Font.Size = 9;
66
67        cellRole.Controls.Add(lblRole);
68        row.Cells.Add(cellRole);
69
70        tblContainer.Rows.Add(row);
71      }
72    }
73
74    private ArrayList GetTeamMemberName(string AuditItemID, out string strMasterName, out string strTeamLeader,out string strPM)
75    {
76      ArrayList al = new ArrayList();
77      strMasterName = "無";
78      strTeamLeader = "無";
79      strPM = "無";
80
81      PersonRole pr;
82      pr.name = "張三";
83      pr.role = "總經理";
84      al.Add(pr);
85
86      pr.name = "李四";
87      pr.role = "副總經理";
88      al.Add(pr);
89
90      pr.name = "王五";
91      pr.role = "科員";
92      al.Add(pr);
93
94      pr.name = "趙六";
95      pr.role = "科員";
96      al.Add(pr);
97
98      return al;
99    }
100  }

在繪制頁面的時候,用哪種方式應該是仁者見仁、智者見智。在站點開發中,這3種方式都有典型的應用,特別是第三種,我發現在解決部分頁面處理的性能問題中應用的非常有效。況且可以自動化的Layout頁面控件,個性化處理比DataGrid中重寫Render更加容易。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved