国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ASP.NET Web開發框架之二 數據輸入窗體

開發 后端
Enterprise Solution對于要輸入數據并保存到數據庫中的這一類操作,統一提供相同的界面,對數據快速操作。以記事本為例子,它的最終效果是這樣的

Web框架要達到快速開發,又便于維護,進行了一系列的努力。

請看最初始的ASP.NET頁面,對數據進行操作的代碼,頁面的基本代碼如下所示

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.        if (!IsPostBack)  
  4.        {  
  5.               LoadData();  
  6.         }  
  7. }  
  8.  
  9. private void LoadData()  
  10.  {  
  11.      UserEntity  current=GetUser(); 
  1.      tbxName.Text = current.Name;  
  2.      tbxRemark.Text = current.Remark;  
  3. }  
  4.  
  5. protected void btnSave_Click(object sender, EventArgs e)  
  6. {     
  7.             int id = GetQueryIntValue("id");          
  8.             IXRoleManager menuManager = ClientProxyFactory.CreateProxyInstance<IXRoleManager>();  
  9.             XRoleEntity item = menuManager.GetXRole(id);  
  10.  
  11.             item.Name = tbxName.Text.Trim();  
  12.             item.Remark = tbxRemark.Text.Trim();           
  13.             menuManager.SaveXRole(item);  
  14.             ExtAspNet.Alert.Show("Save successfully");  

在Page_Load中加載數據,并綁定到控件中去。在保存按鈕事件中,把用戶修改過的值,再寫回到數據庫中。這樣的代碼,在項目中要重復很多次,數據項越多,所需要的代碼量越大。有沒有一種辦法,可以實現自動綁定數據到控件中,在保存中,又自動將數據寫回到數據庫中去呢? Enterprise Solution以下面的方法來實現。

Enterprise Solution對于要輸入數據并保存到數據庫中的這一類操作,統一提供相同的界面,對數據快速操作。以記事本為例子,它的最終效果是這樣的

image

工具欄按鈕由框架自動加載,當你的類型繼承自EntryPageBase時,它就會加載工具欄,用于操作數據。

  1. [Function("AIITRL""~/module/note.aspx")]  
  2. public partial class note : EntryPageBase  
  3. {  
  4.         protected override void PageLoadEvent(object sender, EventArgs e)  
  5.         {  
  6.             if (!IsPostBack)             
  7.                 TransactionType = "BlotterEntity";                              
  8.             base.PageLoadEvent(sender, e);  
  9.         }  

重寫基類的PageLoadEvent方法,傳入TransactionType ,框架以TransactionType 來識別界面的實體對象,自動實現讀寫操作。頁面中的加載,保存,刪除按鈕事件的代碼如下,可以看到,它們都是在重寫基類的方法

  1. public override EntityBase2 LoadEntity(string customerNo)  
  2.  {  
  3.      IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();  
  4.      BlotterEntity customer = manager.GetBlotter(Convert.ToInt16(customerNo));  
  5.      return customer;  
  6.  }      
  7.  
  8.  public override void DeleteEntity(EntityBase2 entity)  
  9.  {  
  10.      BlotterEntity user = (BlotterEntity)entity;  
  11.      IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();  
  12.      manager.DeleteBlotter(user);  
  13.  }  
  14.  
  15.  public override void SaveEntity(EntityBase2 entity)  
  16.  {  
  17.      BlotterEntity user = (BlotterEntity)entity;  
  18.      IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();  
  19.      manager.SaveBlotter(user);  
  20.  }     

如你所看到的,這就是所有的代碼,關于數據加載,保存,刪除的代碼,沒有數據綁定,也沒有數據回寫到數據庫中的代碼。***,來看一下,ASPX頁面,是如何達到這個目的的

  1. <ext:NumberBox ID="TextBox3" AutoFind="true"  runat="server" Label="Title" DataBindingString="BlotterEntity:Id"></ext:NumberBox> 

每一個需要綁定數據的ExtAspNet控件,附帶一個DataBindingString屬性,指出綁定到對象的屬性名。這個數字輸入框是綁定到記事本的Id屬性,在設計時,你可以這樣指定它

Web框架提供了快速的數據屬性綁定支持,請先在配置文件中指定需要反射的程序集完整路徑。

  1. <appSettings>   
  2.    <add key="Assembly" value="E:\Solution\Enterprise Solution\Build\Benin.BusinessLogic.dll"/>   
  3. </appSettings>  
  4.  

DataBindingString的編輯器,反射此程序集,把它的屬性顯示在ListView中,用于綁定。

應用此模型,明顯的減少了代碼量。比如,有100個控件,就要寫100行讀取值并到綁定到界面中的代碼,在保存時,再寫100行代碼,把值回寫到數據庫中。而此開發方法,數據的綁定是自動的,您只需要指定必要的屬性,框架會為你做好其它的事情。再來看看,要實現此方法,背后要做出的努力

1  需要指定要反射的類型,TransactionType = "BlotterEntity"; 這一句的作用相當關鍵。

2  將反射的值,綁定到控件。依據反射,賦值的代碼,如下所示

  1. ReflectionHelper.SetPropertyValue(textbox, targetProperty, obj); 

這一句就是用來給值的,把從數據庫中取到值,轉化為可用的類型,賦給textbox的Text屬性,完成數據綁定。

3  回寫值到數據庫中。依然是反射,把值取到,賦給Entity

  1. object obj = ReflectionHelper.GetPropertyValue(textbox, targetProperty);  
  2. object converted = Convert.ChangeType(obj, type);  
  3. ReflectionHelper.SetPropertyValue(entity, arr[1], converted); 

如代碼所示,取到值,回寫到實體類的屬性中。起關鍵作用的,還是DataBindingString字符串。

再來看看,主從表數據的讀寫,這比上面的單表讀寫,要復雜一些。

image 

銷售單由表頭,參考編號和明細多行物料編號組成。表頭的讀寫,可以用上面的方法,在明細的數據讀取上,重寫方法

  1. protected override void InitNavigator(EntityBase2 entity)  
  2. {  
  3.        SalesOrderEntity user = (SalesOrderEntity)entity;  
  4.        Grid1.DataSource = user.SalesOrderDetails;  
  5.        Grid1.DataBind();  

InitNavigator用于獲取當前實體,綁定值到明細列表中。Insert按鈕的的實現原理如下,它把表頭的主鍵值,帶到明細頁面中去,用HiddenField藏在頁面中。這樣,在保存明細時,以此值作為主鍵保存。當返回表頭時,刷新主表,重新獲取值,則可以顯示明細表增加的值。

 

原文鏈接:http://www.cnblogs.com/JamesLi2015/archive/2012/09/19/2693130.html

責任編輯:張偉 來源: James Li的博客
相關推薦

2012-09-18 11:02:10

ASP.NETC#Web Forms

2009-07-27 13:39:06

Web窗體頁ASP.NET

2012-09-20 09:54:12

ASP.NETWebC

2012-09-25 09:31:58

ASP.NETC#Web

2012-09-18 14:32:08

ASP.NETC#

2012-09-26 09:46:29

ASP.NETWeb框架

2009-07-29 09:38:06

Web開發ASP.NET

2012-10-08 14:01:54

ASP.NETWebC

2012-09-29 13:20:30

ASP.NETWeb框架

2009-07-24 13:20:44

MVC框架ASP.NET

2014-06-30 09:22:38

ASP.NETBootstrap

2011-03-16 21:05:59

Azure開發者Cloud Servi

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-04-20 13:34:27

ASP.NET視頻教程Web開發

2009-07-29 17:16:47

2009-07-28 15:53:43

ASP.NET Web

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 10:52:38

點贊
收藏

51CTO技術棧公眾號

天天干天天综合| 中文字幕第一页久久| 亚洲精品影院| 国产精品区一区二区三| 九九热视频在线观看| 日韩不卡中文字幕| 欧美偷拍综合| 女人被男人躁得好爽免费视频| 一区二区三区波多野结衣在线观看 | 欧美刺激性大交免费视频| 一区二区三区毛片免费| 日韩成人三级视频| 黑丝美女久久久| 另类视频一区二区三区| 成人看片视频| 国产人妖乱国产精品人妖| 免费a级在线播放| 91高清免费视频| 国产精品996| 92国产在线视频| 情事1991在线| 99久久免费国产| 午夜dj在线观看高清视频完整版| 欧洲亚洲免费在线| av电影在线观看一区| 久cao在线| 国产色视频一区| 亚洲国产高清不卡| 三级成人黄色影院| 欧美精品与人动性物交免费看| 亚洲国产综合在线| 日韩在线成人| 男女激烈动态图| 欧美第一区第二区| 午夜激情一区| 中文字幕第5页| 韩日欧美一区二区| 国产91富婆露脸刺激对白| 黄网站免费在线播放| 成人午夜黄色影院| 亚洲精品视频在线观看免费| 五月亚洲综合| 欧美另类极品videosbest最新版本| 精一区二区三区| 久久99精品久久久久久野外| 99精彩视频在线观看免费| 亚洲一区二区av在线| 欧美成人精品午夜一区二区| 日韩伦理在线免费观看| 亚洲精品小视频| 美女国产一区二区三区| 日本美女高清在线观看免费| 97久久精品午夜一区二区| 舔着乳尖日韩一区| 婷婷亚洲综合| 水莓100在线视频| 成人亚洲欧美一区二区三区| 天天综合网 天天综合色| 亚洲小说图片视频| avlululu| 国产精品久久久久久一区二区 | 99热在这里有精品免费| yiren22亚洲综合伊人22| 国产精品69久久久久| 国产精品天美传媒| 国产厕拍一区| 国产日韩在线| 国产97在线视频| 伊人性伊人情综合网| 国产欧美日韩影院| 在线视频国产福利| 91午夜在线播放| 欧美三级电影在线观看| av成人天堂| 青青草原国产在线| 免费观看黄色的网站| 亚洲精品影视在线观看| 成人午夜在线播放| 日本亚洲视频| 日本91av在线播放| 97成人超碰免| 国产丝袜一区二区三区| 久久久久九九视频| 日本黄色精品| 国产伦精品一区二区三区免费| 小草在线视频在线免费视频| 91日本在线观看| 欧美精品精品一区| 久草精品在线观看| 91麻豆精品国产综合久久久| www.99av| 国产伦精品一区二区三毛| 亚洲成人久久电影| 91丨九色丨国产丨porny| 狼人精品一区二区三区在线| 在线观看h视频| 精品久久久久久乱码天堂| 亚洲精品久久久一区二区三区 | 麻豆视频一区| 日日噜噜噜夜夜爽爽狠狠视频 | 亚洲自拍偷拍色片视频| 欧美精品777| 精彩视频一区二区| 欧美一级片网址| 亚洲一区二区三区成人| 日韩电影免费观看在| xvideos国产精品| 亚洲精品国产成人影院| 超碰超碰在线| 黄色动漫在线免费看| 国产精品美女在线| 欧美精品亚洲一区二区在线播放| **亚洲第一综合导航网站| 国产精品.com| 国产欧美精品一区二区三区| 亚洲精品免费在线看| 北条麻妃在线视频| 高清视频在线观看三级| 操人在线观看| 91麻豆精品91久久久久同性| 国产91精品露脸国语对白| 精品中文在线| 国产三区四区在线观看| 影音先锋男人的网站| 色综合久久悠悠| 91成人看片片| 国产成人免费视频网站| 欧美呦呦网站| 中文在线免费视频| 污网站在线观看视频| 免费在线看黄色片| 成人欧美一区二区三区黑人| 日韩电影中文字幕在线| 亚洲精品乱码久久久久| 蜜臀久久久99精品久久久久久| 亚洲日本三级| 范冰冰一级做a爰片久久毛片| 在线播放的av| 久久国产色av免费观看| 欧美精品一区二区三区在线四季| 69久久夜色精品国产69| 日韩大陆欧美高清视频区| 午夜精品久久久久影视| 99精品久久只有精品| 国产模特精品视频久久久久| 日本福利一区| 亚洲同志男男gay1069网站| 在线免费观看h| 成年人视频观看| 久久久久久欧美精品色一二三四 | 美女日韩一区| 视频在线这里都是精品| www免费在线观看视频| 国产精品专区在线| 区一区二区三区中文字幕| 国产精品爽黄69| 久久影院在线观看| 亚洲国产精彩中文乱码av在线播放| 亚洲成人自拍一区| 国产午夜精品一区二区三区四区| 秋霞午夜av一区二区三区| 久久一本综合| 97一区二区国产好的精华液| 一根才成人网| 调教视频免费在线观看| 狠狠干在线视频| 激情视频免费网站| 9色视频在线观看| 激情视频一区二区| 成人国产精品色哟哟| 国内精品美女av在线播放| 亚洲夜晚福利在线观看| 欧美变态口味重另类| 91国产福利在线| 午夜精彩视频在线观看不卡| 综合久久久久久| 国产视频一区在线播放| 9i在线看片成人免费| 韩国精品在线观看| 日韩av中文在线观看| 99精品欧美| 亚洲高清二区| 艳女tv在线观看国产一区| jizzjizz欧美69巨大| 国产一区二区三区亚洲| 欧美另类中文字幕| 99er精品视频| 国产午夜亚洲精品一级在线| 欧美成人福利| 91黑丝在线| 国产成免费视频| 99reav2| 国产三级视频| 91xxxxx| 一级片免费看| 黄污在线观看| 青春有你2免费观看完整版在线播放高清 | 超碰在线中文| 欧美12一14sex性hd| 免费高清在线|