WEB开发网
开发学院WEB开发ASP.NET ASP.NET中用哪种方式表格化数据 阅读

ASP.NET中用哪种方式表格化数据

 2006-01-06 17:02:08 来源:WEB开发网   
核心提示: 在开发asp.net站点项目中,经常用表格化的方式显示数据,ASP.NET中用哪种方式表格化数据,最常用的可能就是DataGrid绑定DataSet数据的方式,在做过的软件项目中,我发现在解决部分页面处理的性能问题中应用的非常有效,况且可以自动化的Layout页面控件,有3种表格化数据的典型处理方式, 1、Dat

   在开发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更加容易。

Tags:ASP NET 中用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接