代码改变世界

Bugnet学习总结(6)用户控件

2010-08-01 11:49  MichaelYin  阅读(464)  评论(0编辑  收藏  举报

用户控件作为Asp.net提供的一种自定义可重用的机制,在很多的项目中都得到了应用,Bugnet里面也使用了很多用户控件。

UserControls文件夹里面放的除了fckeditor和xslt外,就是项目里面要用到的用户控件了,代码都不难,下面就把里面的DisplayBugs.ascx拿出来稍微讲一下。该控件在Bugnet中被用到的次数还是很多的,功能也比较简单,就是提供了一个有图表显示,有排序功能的列表。该用户控件是在Gridview的基础上做的开发,增加了一个BugCollection和EventHandler。BugCollection是Gridview需要绑定的数据源,而EventHandler则是使用了事件。调用该事件实现绑定数据的具体操作。

 <uc1:DisplayBugs ID="InProgressBugs" HeaderBackColor="#eeeeee" CssClass="issues" OnRebindCommand="DisplayBugs_DataBind" runat="server" />

上面是在MyBugs.aspx中重用DisplayBugs.ascx用户控件的代码,可以看到一行代码基本就搞定,而后台的代码只需要把相应的数据源给用户控件,然后执行DataBind就可以了。像这样

BugsAssigned.DataSource = Bug.GetBugsByCriteria(-1, -1, -1, 0, 0, 0, User.Identity.Name, 0, string.Empty, false);
BugsAssigned.DataBind();

需要在这里提到的一点是在这里Gridview绑定数据使用的是自带的分页,其实现的机制是将数据首先全部从数据库中查出来然后全部给gvw,gvw然后根据currentpageindex从中选取需要的数据,不要的数据放在内存中,这样的实现方式在数据量小的时候还好,在大数据量的时候是有很大的影响的。具体情况请点击这里

Administration文件夹中的AddProject.aspx页面实现了一种动态加载用户控件的技术。根据用户操作到第几步动态加载相应的用户控件进行显示,这些用户控件实现IEditProjectControl这个自定义接口。方便进行操作。Asp.net中的Wizard好像也可以实现这个类似的功能,有时间看一下。。