Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15895
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-16 16:12
文章分类
文章存档

2014年(9)

我的朋友

分类: C#/.net

2014-03-26 22:46:04

  ASP.NET中的三种表格化数据方法

  在开发ASP.NET站点项目中,经常用表格化的方式显示数据。最常用的可能就是DataGrid绑定DataSet数据的方式。在做过的软件项目中,有3种表格化数据的典型处理方式。

  1、DataGrid绑定数据源。这种方式大家用的最多,但是DataGrid与ADO.NET完美的绑定方式,还是让人不爽。清一色的DataGrid风格很难适应不同项目的特殊风格,而且在DataGrid上做出的个性化处理也会非常的麻烦。

  2、用XML(数据)+XSL(样式单)。大家能理解,DataSet绑定到DataGrid的实现机理不过如此。如图所示,实现这样的一个表格,开发人员可以尽情的设计XSL的风格样式。

      3、直接将数据绘制到HTML。这个方式有些土,但有些时候却非常有效,先看实现的代码。下述代码是实现上图所示的表格。

  1234678

综合管理部人员职务

9101112人员姓名13部门职务1415161718

  直接用ASP.NET WebControls的Add方法,将Label添加到HTML的Cell中。

  1publicclassWebForm2:System.Web.UI.Page2{34structPersonRole5{6publicstringname;7publicstringrole;8}910protectedSystem.Web.UI.HtmlControls.HtmlTabletblContainer;11publicstringstrAuditItemID="A899B637-AC47-42EB-9B61-A61C9C880DDC";12privatevoidPage_Load(objectsender,System.EventArgse)13{14//在此处放置用户代码以初始化页面15if(Request.QueryString["AuditItemID"]!=null)16{17strAuditItemID=Request.QueryString["AuditItemID"].ToString();18}1920GetTeamMember(strAuditItemID);21}2223Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码24overrideprotectedvoidOnInit(EventArgse)25{26//27//CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。28//29InitializeComponent();30base.OnInit(e);31}3233/**////

34///设计器支持所需的方法-不要使用代码编辑器修改35///此方法的内容。36///37privatevoidInitializeComponent()38{39this.Load+=newSystem.EventHandler(this.Page_Load);4041}42#endregion4344privatevoidGetTeamMember(stringAuditItemID)45{46stringstrMaster,strTeamLeader,strPM;47ArrayListal=GetTeamMemberName(AuditItemID,outstrMaster,outstrTeamLeader,outstrPM);4849foreach(PersonRoleprinal)50{51HtmlTableCellcell=newHtmlTableCell();52cell.Align="Center";53Labellbl=newLabel();54lbl.Text=pr.name;55lbl.Font.Size=9;5657cell.Controls.Add(lbl);58HtmlTableRowrow=newHtmlTableRow();59row.Cells.Add(cell);6061HtmlTableCellcellRole=newHtmlTableCell();62cellRole.Align="Center";63LabellblRole=newLabel();64lblRole.Text=pr.role;65lblRole.Font.Size=9;6667cellRole.Controls.Add(lblRole);68row.Cells.Add(cellRole);6970tblContainer.Rows.Add(row);71}72}7374privateArrayListGetTeamMemberName(stringAuditItemID,outstringstrMasterName,outstringstrTeamLeader,outstringstrPM)75{76ArrayListal=newArrayList();77strMasterName="无";78strTeamLeader="无";79strPM="无";8081PersonRolepr;82pr.name="张三";83pr.role="总经理";84al.Add(pr);8586pr.name="李四";87pr.role="副总经理";88al.Add(pr);8990pr.name="王五";91pr.role="科员";92al.Add(pr);9394pr.name="赵六";95pr.role="科员";96al.Add(pr);9798returnal;99}100}

  在绘制页面的时候,用哪种方式应该是仁者见仁、智者见智。在站点开发中,这3种方式都有典型的应用,特别是第三种,我发现在解决部分页面处理的性能问题中应用的非常有效。况且可以自动化的Layout页面控件,个性化处理比DataGrid中重写Render更加容易。

阅读(1167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~