日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码生成工具之界面快速生成

發(fā)布時(shí)間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码生成工具之界面快速生成 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

界面開發(fā),無論對于Web開發(fā),還是Winform開發(fā),都需要耗費(fèi)一定的時(shí)間,特別對于一個(gè)數(shù)據(jù)庫字段比較多的界面,一般就需要在編輯界面上擺的更多的控件來做數(shù)據(jù)顯示,每次碰到這個(gè),都有點(diǎn)頭痛,反復(fù)的機(jī)械操作讓人挺累,也很煩,但是又必須這樣做。

由于數(shù)據(jù)庫字段和界面的排版都有一定的關(guān)聯(lián)關(guān)系,因此可以通過代碼生成工具Database2Sharp的數(shù)據(jù)庫元數(shù)據(jù),包含表名稱、備注信息、字段列表,以及每個(gè)字段的名稱、備注、類型等信息,構(gòu)造一個(gè)基礎(chǔ)的界面,把重復(fù)機(jī)械的部分給快速完成,這就是我所說的界面快速生成。當(dāng)然,對于精致的界面,機(jī)械的生成肯定不能滿足我們的需要,因此真正的界面需要在這個(gè)基礎(chǔ)上修改完善一下,但是由于重復(fù)勞動部分,已經(jīng)給工具處理掉了,因此,界面開發(fā)效率會大大提高。

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

基于EnterpriseLibray架構(gòu)的代碼生成,除了可以生成傳統(tǒng)的業(yè)務(wù)層、數(shù)據(jù)訪問層、數(shù)據(jù)訪問接口層、實(shí)體層外,還同時(shí)生成了Web界面工程,Web界面工程已經(jīng)添加了相關(guān)的引用程序集及必須的控件,生成后即可編譯運(yùn)行,一些表字段設(shè)計(jì)合理的話,甚至不用修改一行代碼就能直接使用,如下所示。

生成后的項(xiàng)目界面截圖如下所示。

以下是TB_ItemDetail表生成的界面,沒有修改過任何東西,列表頁面呈現(xiàn)的效果。

其中編輯及查看頁面也生成了,直接單擊連接就可以看到效果,如下圖所示。

?

這些效果是很基本的界面布局了,如果需要更好看的,可以根據(jù)需要調(diào)整下每行的數(shù)量,以及顯示方式。這樣的效果,雖然不算最好看,但是已經(jīng)幫我們把界面元素弄起來了,我們后面的工作就很好開展,不用再重復(fù)添加每個(gè)字段對應(yīng)的控件布局信息了。具體的代碼是標(biāo)準(zhǔn)的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>
...............

當(dāng)然后臺代碼的保存及賦值顯示,肯定是少不了的了,這些也是根據(jù)我的框架代碼生成的,應(yīng)該來說是很有用的。

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>/// 獲取數(shù)據(jù)/// </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");} }

有了這些智能的界面生成,界面開發(fā)其實(shí)是一件不再枯燥的事情,節(jié)省更多的時(shí)間,做更有意義的事情。

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

除了Web的界面開發(fā),Winform的界面開發(fā),當(dāng)然也很重要,枯燥的事情一樣可以交給代碼生成工具Database2Sharp進(jìn)行生成,不需要讓人工反復(fù)的做這些無用功,或者是技術(shù)含量不太高的東西。

上面Web界面工程,我是采用SQLServer的數(shù)據(jù)庫進(jìn)行生成代碼的,這個(gè)例子,我們介紹一下Oracle數(shù)據(jù)庫的生成方式,其實(shí)這個(gè)代碼生成工具,對應(yīng)用什么數(shù)據(jù)庫不重要,都會很好的給你生成相關(guān)的界面信息,不管你是用SQLServer還是Oracle,或者是Sqlite、Access、MySql等等,都一樣可以很好的生成所需的開發(fā)代碼的。

工具生成了界面布局代碼,以及界面后臺邏輯代碼,這樣的代碼正是我們開發(fā)所需要的,我們看到生成后的界面代碼(沒有修改代碼的),在VS里面的真實(shí)效果如下。

上面的布局采用了LayoutControl來進(jìn)行布局控制,這是一種很好的布局控制方法,它除了使得界面更加美觀外,還能非常自由調(diào)整每個(gè)控件的位置及大小。

當(dāng)然,我們一般為了美觀需要,會對界面進(jìn)行一定的調(diào)整,由于DevExpress控件類型變化切換很方便,所以這種調(diào)整很自由高效,調(diào)整后的界面如下所示。

比起十幾秒鐘弄好一個(gè)界面,純手工做這樣的界面,沒有十幾分鐘,估計(jì)弄不好的,而且容易出錯(cuò),最重要的問題,就是團(tuán)隊(duì)開發(fā)的時(shí)候,這個(gè)統(tǒng)一性就很有保證,開發(fā)效率高,帶來Bug也會很少。

3、基于傳統(tǒng)的Winform界面快速生成

?傳統(tǒng)的Winform界面和DotNetBar樣式的界面生成,和上面的DevExpress樣式代碼很類似,不過控件不同而已,由于不同的需要,用傳統(tǒng)界面元素開發(fā),也是一種常見的開發(fā)模式,因此我的代碼生成工具也支持這種常規(guī)的界面生成,來輔助大家做好界面的工作。

除了設(shè)置以上界面樣式外,其他生成操作一樣。得到的界面效果如下所示。

和DevExpress控件界面代碼類似,這里也使用了TableLayout的布局控件,用來較好控制布局的高度寬度,以及每行位置等,這樣整體效果就很好,也容易進(jìn)行界面元素的控制。

本文轉(zhuǎn)自博客園伍華聰?shù)牟┛?#xff0c;原文鏈接:代碼生成工具之界面快速生成,如需轉(zhuǎn)載請自行聯(lián)系原博主。



總結(jié)

以上是生活随笔為你收集整理的代码生成工具之界面快速生成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。