增删改查,10分钟内完成的方法

首先要感谢LTP大人的动软.net代码生成器公布的源码。

从软件的功能找到对应的代码,可以根据自己的需求设计代码生成的算法。

以下,分享一下心得:

1.找到代码生成器的实现类:CodeMaker。这是一个Form的子类,找到生成代码的方法,private void btn_Ok_Click(object sender, EventArgs e)

   发现其中调用了类中的CreatCS();CreatWeb();当然这两个方法是根据用户选择的条件来分别调用的。以此顺藤继续摸瓜。

2.此时要明确自己的思路,我们在普通工程中新建aspx页面时通常会连带生成.aspx.cs文件。以我们在同一个页面实现增删改查时所需要的代码为目标,要生成的前台页面及后台页面都要跟自己实现的内容差不多。

3.整理正常实现的同一个页面内对数据主表的增删改查。

   3.1 页面布局:字段罗列部分,gridview展示部分。

   3.2 用户脚本:依照字段类型在各个页面控件中输入字段,点击新增按钮,gridview显示新增记录;可在gridview中点击编辑及更新;可根据页面输入的条件进行查询,由gridview展示所有数据。

   3.3 用户体验:使用ajax.net模板实现页面无刷新操作。

4.回到代码生成器中,继续寻找核心实现部分。根据VS提供的右键->转到定义,我们可以找到这样一条路径:CreatWeb->cb.GetWebHtmlCode->GetAddAspx..

  ->ibw.GetAddAspx, 这里的cb是一个CodeBuilders对象,ibw是一个IBuilderWeb的接口实例化对象。因为IBuilderWeb中定义了生成增删改查方法的规则,所以我们需要继续查找的是实现了这个接口的类,这样才能找到核心实现。当然这也是相当容易的,这里再次感谢LTP大人编码的规范度很高。BuilderWeb就是IBuilderWeb的实现类。找到GetUpdateAspx的具体实现(这里有GetAddAspxGetUpdateAspxGetShowAspx等接口方法的实现,因为都可以对应到具体的操作,所以无妨拿GetUpdateAspx开一下刀)

5.到此,我们可以明确所谓代码生成器的核心是字符串的整理过程。所以先整理出一个带有CSSJAVASCRIPT的页面模板是很关键的。在模板代码中做好要被迭代替换的place holder,比如,字段罗列,我们要根据字段是否为数据表中的key,来设计是否是用户必填的项目,也可以把数据表中各个字段的备注说明,作为页面控件前的label说明。我这边实现的时候,是采用每行6列的表格布局,以字段说明,字段对应控件为一组,分为3组显示,字段说明部分要用灰色背景,每组控件的高宽都基本一致。如果字段类型是date,则text控件要自动带有onfocus="setday(this)"的属性设置。这一点是根据JS日期控件中的主要方法来实现。这样的页面布局,比较紧凑,特别是在字段的数量大于20个的时候,显得让人满意。

6.继续完成CS代码生成,由于使用了ajax extension,在后台代码中只要把用户脚本中所有的用户操作都正常的加以实现就可以。当然,也是要有CS的模板。

------------------------------------------------辛苦的分割线-------------------------------------------------------------

7.这部分工作完成后,后续的内容就相当轻松了。由于LTP大人公布的代码生成器中,提供了sqlServeroraclemysqlOLEDB等多种数据库的连接方法。我们只需要在所需求的数据库中新建好自己的数据表,运行自己自定义过后的代码生成器,点几下鼠标,代码自动生成。这部分时间忽略不计,10分钟只是用来做数据输入,修改,查询等一系列操作等调试。

 

8.总结:程序员的工作是给用户提供信息管理及管理的便利性,但也要回头给我们自己提供编程的便利性、减少重复作业。

 

PS:感觉程序员就好比是魔法师,身边要有很多可用道具,有些道具,是要学习怎么用,有些道具要自己改造,其中的修炼好多,也让人乐在其中。

posted @ 2011-04-08 09:30  郑宇  阅读(4910)  评论(0编辑  收藏  举报