ASP.NET中的三种表格化数据方法
点击次数:54 次 发布日期:2008-11-06 08:02:03 作者:源代码网
|
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> 软件开发网 www.mscto.com 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> 软件开发网 www.mscto.com 17 </tr>18 </table>直接用ASP.NET WebControls的Add方法,将Label添加到HTML的Cell中。 1 public class WebForm2 : System.Web.UI.Page 2 ![]() { 3 4 struct PersonRole5 ![]() { 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 窗体设计器生成的代码 软件开发网 www.mscto.com 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 ![]() { 软件开发网 www.mscto.com 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(); 软件开发网 www.mscto.com 54 lbl.Text = pr.name;55 lbl.Font.Size = 9;56 ![]() 57 cell.Controls.Add(lbl); 58 HtmlTableRow row=new HtmlTableRow(); 软件开发网 www.mscto.com 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) 软件开发网 www.mscto.com 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更加容易。
源代码网推荐 源代码网供稿. |



cellSpacing





}





strAuditItemID
}
GetTeamMember(strAuditItemID);
}




}




}



ArrayList al 


HtmlTableCell cell
cell.Align
Label lbl
lbl.Text
lbl.Font.Size 
cell.Controls.Add(lbl);
HtmlTableRow row
row.Cells.Add(cell);
HtmlTableCell cellRole
cellRole.Align
Label lblRole
lblRole.Text
lblRole.Font.Size
cellRole.Controls.Add(lblRole);
row.Cells.Add(cellRole);
tblContainer.Rows.Add(row);
}
}


ArrayList al
strMasterName
strTeamLeader
strPM
PersonRole pr;
pr.name
pr.role
al.Add(pr);
pr.name
pr.role
al.Add(pr);
pr.name
pr.role
al.Add(pr);
pr.name
pr.role
al.Add(pr);
}
}