利用反射读写属性,动态关联数据库

 

最近在要在网站中做个调查表的用户控件,也就是一些单选题的集合,然后用户可以投票。

最开始为了方便,直接就在数据库将其选项默认最多为4个,下面是对应的实体层的代码(只是简单的与数据库对应)。

SurveyData实体层

 

然后在UI层根据判断每个字段是否为空,非空则加入RadioButtonList列表。

绑定RadioButtonList数据

 

在提交按钮的点击事情也要进行类似判断,根据RadioButtonList的选择更新数据库。

这样做的话,可以完成功能,但是页面中耦合性太大。假使现在想把选项增加到6个,那么就要从数据库开始修改,最后要修改到UI层,在UI层中添加

需要添加的语句

这样的语句。这样三层就没有多大意义了。我们应该想想办法降低她们的耦合性。

首先,我们可以在数据库Survey表中添加多个字段[ItemCount],来表示选择项的总数,而且在UI层中可以根据这个字段自动的读取相应的[Item][Count]字段。我们发现,选择项的字段设置是有规律的:Item1Item2Item3Item4,投票人数字段也是,所以很快的我们想到可以用反射来完成。

下面是修改过的RadioButtonList数据绑定函数,主要用了反射读取属性

用反射绑定RadioButtonList1数据


接着在Button1_Click事件中用反射设置属性

提交按钮事件


到此,我们就利用反射写了一段UI层的代码,而且跟数据层和逻辑层耦合性不算高。以后修改数据库个数据层等就不需要修改UI层了,达到了分层的目的。

我也是刚刚开始学习反射,很开心有这样一个我觉得不错的例子用上了。当然,这个例子应该有更好的方法,欢迎大家交流。

文中用到了李天平老师的类库,大家可以上他BLOG看看,写的很好,很实用。

http://www.cnblogs.com/ltp/archive/2008/03/01/1087455.html

最后推荐子阳兄的BLOG,这里几篇关于反射的文章写的好好,收益匪浅。

http://www.cnblogs.com/JimmyZhang/category/107410.html

 

posted @ 2008-03-24 15:21 yezizhe 阅读(161) 评论(0)  编辑 收藏

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-24 15:30 编辑过
 
另存  打印
最新IT新闻: