最近一段时间好像没做什么事情,也没学到什么东西。之前有个网站在做的,后来没有实质性的进展就放下了。广东省程序设计大赛就快开始了,本来想把精力放在这里,毕竟去年暑假也一个人留下来学习算法,那段时间真的不容易啊,整天就躺在床上,脑筋一直在转弯,不过收获也很大,对一般算法还是有所了解了。本来很想通过努力在这次比赛取得好点的成绩的,现在又矛盾了。一个是现在复习起来其实还是很吃力的,学习环境也不是特别好。其次是在学校真的很难找到学习这个的人。毕竟比赛是三人的。我在POJ做过一些题目,内容涉及的范围之广,绝对不是一个人可以掌握的。想来想去,既然比赛那边不会有什么成绩,还是把时间放在.NET上吧。开始学习cssjs吧,以前老是觉得css是美工学习的,js是做客户端才要学习的,但是实际自己在做一些东西的时候,不懂css很麻烦,另外就是很多用服务端很难实现的功能用js就很方便实现了,而且ajax也挺流行的。所以准备先学好jQuery,今天看了一点,挺好玩的,客户端开发其实很有趣啊~~努力吧~

posted @ 2008-04-07 21:00 yezizhe 阅读(72) | 评论 (0)编辑
 

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

最开始为了方便,直接就在数据库将其选项默认最多为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)编辑
     摘要: 三层架构中,表示层用FormView +ObjectDataSource 添加数据,然后取返回值的实现方法。存储过程Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->CREATEPROCEDURE[dbo].[User_Add]@Titlenvarch...  阅读全文
posted @ 2008-02-18 03:24 yezizhe 阅读(248) | 评论 (0)编辑

 

用数据集Dataset开发是挺方便的事情,但是一旦遇到需要修改的时候就非常的麻烦,经常会有奇怪的问题。Dataset可以看成是一个类的集合,里面有列属性和方法属性。分别可以对应数据表的字段和相应的方法,方法可以是直接写在里面的SQL语句或调用存储过程。而且SELECT方法返回的数据必须对应Dataset的列属性,要不就有错误。这种情况经常发生在对数据库表修改后,却没有对Dataset相应的列属性和方法属性进行修改的情况下,会产生“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。”的错误。

解决方法是修改完数据库表之后一定要对相应的Dataset进行修改。这里有两点觉得可以注意的。一个是重新使用TableAdapter的“配置“功能,让其重新生成全部列。还有就是对存储过程的修改。一般使用SELECT的时候都会只SELECT出相应的字段,这样可以增加性能。但是我觉得在Dataset中,就干脆用SELECT * 就行了,要不每次修改完数据库都要改相应的SELECT 方法,特别当你想对一个表增加或减少字段的情况下,就很麻烦了。用了Dataset + ObjectDataSource开发一段时间,开始上手是比较容易,但是后期要修改一些东西却非常的麻烦,特别是调试的时候。所以还是按三层架构最原始的方式去开发,维护起来也方便很多。

posted @ 2008-01-17 10:46 yezizhe 阅读(246) | 评论 (0)编辑