界面开发,无论对于Web开发,还是Winform开发,都需要耗费一定的时间,特别对于一个数据库字段比较多的界面,一般就需要在编辑界面上摆的更多的控件来做数据显示,每次碰到这个,都有点头痛,反复的机械操作让人挺累,也很烦,但是又必须这样做。

由于数据库字段和界面的排版都有一定的关联关系,因此可以通过代码生成工具Database2Sharp的数据库元数据,包含表名称、备注信息、字段列表,以及每个字段的名称、备注、类型等信息,构造一个基础的界面,把重复机械的部分给快速完成,这就是我所说的界面快速生成。当然,对于精致的界面,机械的生成肯定不能满足我们的需要,因此真正的界面需要在这个基础上修改完善一下,但是由于重复劳动部分,已经给工具处理掉了,因此,界面开发效率会大大提高。

1、基于Web界面的快速生成

基于EnterpriseLibray架构的代码生成,除了可以生成传统的业务层、数据访问层、数据访问接口层、实体层外,还同时生成了Web界面工程,Web界面工程已经添加了相关的引用程序集及必须的控件,生成后即可编译运行,一些表字段设计合理的话,甚至不用修改一行代码就能直接使用,如下所示。

生成后的项目界面截图如下所示。

以下是TB_ItemDetail表生成的界面,没有修改过任何东西,列表页面呈现的效果。

其中编辑及查看页面也生成了,直接单击连接就可以看到效果,如下图所示。

这些效果是很基本的界面布局了,如果需要更好看的,可以根据需要调整下每行的数量,以及显示方式。这样的效果,虽然不算最好看,但是已经帮我们把界面元素弄起来了,我们后面的工作就很好开展,不用再重复添加每个字段对应的控件布局信息了。具体的代码是标准的HTML控件代码如下所示。

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="Pages_ItemDetail_EditItemDetail"  Codebehind="EditItemDetail.aspx.cs" %><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"><h3 id="h_title" align="center" runat="server">编辑备件信息表 </h3><table class="formitem" cellspacing="1" cellpadding="0" align="Center" border="0"style="border-width: 0px; width: 98%;"><caption>基本信息</caption>  <tr style="width: 100%;"><th align="left" style="width: 20%;">备件编号 :</th><td style="width: 80%;" colspan="3">&nbsp;<asp:TextBox ID="txtItemNo" runat="server" Width="250px" MaxLength="100"></asp:TextBox></td></tr><tr style="width: 100%;"><th align="left" style="width: 20%;">备件名称 :</th><td style="width: 80%;" colspan="3">&nbsp;<asp:TextBox ID="txtItemName" runat="server" Width="250px" MaxLength="100"></asp:TextBox></td></tr><tr style="width: 100%;"><th align="left" style="width: 20%;">供货商 :</th><td style="width: 80%;" colspan="3">&nbsp;<asp:TextBox ID="txtManufacture" runat="server" Width="250px" MaxLength="100"></asp:TextBox></td></tr>
...............

当然后台代码的保存及赋值显示,肯定是少不了的了,这些也是根据我的框架代码生成的,应该来说是很有用的。

public partial class Pages_ItemDetail_EditItemDetail : BasePage
{protected override void OnInit(EventArgs e){base.OnInit(e);this.IsFunctionControl = true;this.FunctionID = "ItemDetail/Edit";}private void BindData(){try{string id = Request.QueryString["ID"];if(!string.IsNullOrEmpty(id)){ItemDetailInfo info = BLLFactory<ItemDetail>.Instance.FindByID(id);if(info != null){this.txtItemNo.Text = info.ItemNo;this.txtItemName.Text = info.ItemName;this.txtManufacture.Text = info.Manufacture;this.txtMapNo.Text = info.MapNo;this.txtSpecification.Text = info.Specification;this.txtMaterial.Text = info.Material;this.txtItemBigType.Text = info.ItemBigType;this.txtItemType.Text = info.ItemType;this.txtUnit.Text = info.Unit;this.txtPrice.Text = info.Price.ToString();this.txtSource.Text = info.Source;this.txtStoragePos.Text = info.StoragePos;this.txtUsagePos.Text = info.UsagePos;this.txtNote.Text = info.Note;this.txtWareHouse.Text = info.WareHouse;this.txtDept.Text = info.Dept;}}}catch(Exception ex){Helper.ShowError(this, ex, false);return;}}protected void Page_Load(object sender, EventArgs e){ if(!this.IsPostBack){BindData();}}/// <summary>/// 获取数据/// </summary> private ItemDetailInfo SetData(ItemDetailInfo info){ info.ItemNo = this.txtItemNo.Text;   info.ItemName = this.txtItemName.Text;   info.Manufacture = this.txtManufacture.Text;   info.MapNo = this.txtMapNo.Text;   info.Specification = this.txtSpecification.Text;   info.Material = this.txtMaterial.Text;   info.ItemBigType = this.txtItemBigType.Text;   info.ItemType = this.txtItemType.Text;   info.Unit = this.txtUnit.Text;   info.Price = Helper.SafeConvertDecimal(this.txtPrice.Text);info.Source = this.txtSource.Text;   info.StoragePos = this.txtStoragePos.Text;   info.UsagePos = this.txtUsagePos.Text;   info.Note = this.txtNote.Text;   info.WareHouse = this.txtWareHouse.Text;   info.Dept = this.txtDept.Text;   return info;}protected void imgSubmit_Click(object sender, ImageClickEventArgs e){try{string id = Request.QueryString["ID"];if(string.IsNullOrEmpty(id)){ItemDetailInfo info = new ItemDetailInfo();SetData(info);BLLFactory<ItemDetail>.Instance.Insert(info);}else{ItemDetailInfo info = BLLFactory<ItemDetail>.Instance.FindByID(id);if(info != null){SetData(info);BLLFactory<ItemDetail>.Instance.Update(info, id);}}}catch(Exception ex){Helper.ShowError(this, ex, false);return;}Response.Redirect("ListItemDetail.aspx");}protected void imgBack_Click(object sender, ImageClickEventArgs e){Response.Redirect("ListItemDetail.aspx");}
}

有了这些智能的界面生成,界面开发其实是一件不再枯燥的事情,节省更多的时间,做更有意义的事情。

2、基于DevExpress的Winform界面快速生成

除了Web的界面开发,Winform的界面开发,当然也很重要,枯燥的事情一样可以交给代码生成工具Database2Sharp进行生成,不需要让人工反复的做这些无用功,或者是技术含量不太高的东西。

上面Web界面工程,我是采用SQLServer的数据库进行生成代码的,这个例子,我们介绍一下Oracle数据库的生成方式,其实这个代码生成工具,对应用什么数据库不重要,都会很好的给你生成相关的界面信息,不管你是用SQLServer还是Oracle,或者是Sqlite、Access、MySql等等,都一样可以很好的生成所需的开发代码的。

工具生成了界面布局代码,以及界面后台逻辑代码,这样的代码正是我们开发所需要的,我们看到生成后的界面代码(没有修改代码的),在VS里面的真实效果如下。

上面的布局采用了LayoutControl来进行布局控制,这是一种很好的布局控制方法,它除了使得界面更加美观外,还能非常自由调整每个控件的位置及大小。

当然,我们一般为了美观需要,会对界面进行一定的调整,由于DevExpress控件类型变化切换很方便,所以这种调整很自由高效,调整后的界面如下所示。

比起十几秒钟弄好一个界面,纯手工做这样的界面,没有十几分钟,估计弄不好的,而且容易出错,最重要的问题,就是团队开发的时候,这个统一性就很有保证,开发效率高,带来Bug也会很少。

3、基于传统的Winform界面快速生成

传统的Winform界面和DotNetBar样式的界面生成,和上面的DevExpress样式代码很类似,不过控件不同而已,由于不同的需要,用传统界面元素开发,也是一种常见的开发模式,因此我的代码生成工具也支持这种常规的界面生成,来辅助大家做好界面的工作。

除了设置以上界面样式外,其他生成操作一样。得到的界面效果如下所示。

和DevExpress控件界面代码类似,这里也使用了TableLayout的布局控件,用来较好控制布局的高度宽度,以及每行位置等,这样整体效果就很好,也容易进行界面元素的控制。

本文转自博客园伍华聪的博客,原文链接:代码生成工具之界面快速生成,如需转载请自行联系原博主。

代码生成工具之界面快速生成相关推荐

  1. 工具-eclipse-hibernate关于快速生成*.hbm.xml文件,与bean文件的操作,不使用hibernate tool解决办法之一,主要为了快速开发,写的小工具

    实现思想:就是java对目标表的字符串的处理,以及基础的sql语句 不能使用hibernate tool ,解决办法 为了记录,以后也许还会用的小工具 **工具优点:比手打生成快,能加快hiberna ...

  2. 像素地图生成工具帮助你快速生成精美地图

    在项目中,你可能会需要用到地图以更直观的展示和地域相关的一些信息.现在,借助 AmCharts 新工具--Pixel Map Generator,您可以在短短几分钟内创建出令人惊叹的视觉地图.并可以集 ...

  3. 代码生成工具之Winform查询列表界面生成

    在上面一篇随笔<代码生成工具之界面快速生成>介绍了代码生成工具Database2Sharp的界面生成操作,其中介绍了Web界面(包括列表界面.内容显示.内容编辑界面的生成,另外还介绍了Wi ...

  4. 代码生成工具之数据库表及字段名称转义

    在上篇随笔<代码生成工具之界面快速生成>中介绍过了代码生成工具Database2Sharp是如何快速生成所需的Web界面以及各种Winform界面,其中包括生成即可运行的Web界面效果,W ...

  5. ZeusAutoCode代码生成工具(开源)

    ZeusAutoCode代码生成工具 一.简介 Zeus代码生成器是一款自动代码生成工具,旨在快速生成基础的CRUD代码,在此基础上也提供了一些高级功能,做到灵活配置,生成可扩展性强的代码. 后端是基 ...

  6. 【Hook】postman工具的代码生成工具让它锦上添花

    修改postman工具的代码生成工具加入response自动生成POJO代码 如上图可以快速把请求这个动作转成code,减少重复性劳动. 但是有一点我觉得可以优化下 就是返回的json如果也能自动转成 ...

  7. 常用代码生成工具介绍

    1:CodeSmith工具 优点:支持模板类,可扩展强.建议使用.目前公认的最强大的代码生成工具,支持各种语言.可以和开发环境无缝集成.例如:Vs2008等.       缺点:不免费,最新的可破解版 ...

  8. 代码生成工具更新--快速生成Winform框架的界面项目

    在之前版本的代码生成工具Database2Sharp中,由于代码生成都是考虑Winform和Web通用的目的,因此Winform界面或者Web界面都是单独生成的,在工具中生成相应的界面后,复制到项目里 ...

  9. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。...

    在Winform界面开发的时候,有时候我们客户喜欢把功能放在列表界面的顶部,这样界面和功能整齐放置,也是一种比较美观的方式,基于这种方式的考虑,改造了代码生成工具的Winform界面生成规则,把增删改 ...

最新文章

  1. First update-【计算机方面的权威外文数据库(全)】
  2. Linux 远程登录
  3. mysql数据库重命名php_mysql基础:删除数据库,删除表,重命名表_MySQL
  4. opencv 霍夫线变换
  5. ml是什么_ML,ML,谁是所有人的冠军?
  6. 硬盘序列号示例_序列化代理模式示例
  7. 模糊搜索神器FZF番外篇
  8. Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
  9. msf php脚本提权,[原创]WEB安全第六章 提权篇16 metasploit linux提权
  10. 二分插入排序(c语言)
  11. 开启固定拨号FDN功能,发送信息时如何做FDN检测
  12. 计算机考试网页制作演示视频教程,一级计算机考试网页制作怎么办!求操作步骤!...
  13. openlayers4加载百度地图、百度影像图、谷歌地图、谷歌影像图
  14. 【前端】JS批量生成调查问卷选项
  15. 关于制定《传统蒙古文信息交换与处理字形字符标准编码》
  16. conda-跨用户环境复制
  17. DM9000C网卡驱动程序编写与测试
  18. 操作系统课程设计-时间片轮转法
  19. shineblink 土壤水分测量传感器
  20. (Caffe)基本类Blob,Layer,Net(一)

热门文章

  1. linux sublime3 插件安装插件,手动安装sublimeText3插件
  2. System类+Math类+Arrays类
  3. [webrtc] rtcp模块中rtt时间计算
  4. struts2+extjs文件上传完整实现(攻克了上传中的各种问题)
  5. SSM+mybatis单元测试
  6. 如何设计实现一个地址反解析服务?
  7. protobuf---messge嵌套get set
  8. MonoBehaviour.FixedUpdate 固定更新
  9. 学习关于时间在sql里面的对比,用if语句(这个有点特别)
  10. C#基于Socket的CS模式的完整例子