亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET Web開發中如何進行數據輸入窗體

發布時間:2021-10-29 16:38:31 來源:億速云 閱讀:134 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關ASP.NET Web開發中如何進行數據輸入窗體,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

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

protected void Page_Load(object sender, EventArgs e)  {         if (!IsPostBack)         {                LoadData();          }  }   private void LoadData()   {       UserEntity  current=GetUser();
     tbxName.Text = current.Name;       tbxRemark.Text = current.Remark;  }   protected void btnSave_Click(object sender, EventArgs e)  {                 int id = GetQueryIntValue("id");                      IXRoleManager menuManager = ClientProxyFactory.CreateProxyInstance<IXRoleManager>();              XRoleEntity item = menuManager.GetXRole(id);               item.Name = tbxName.Text.Trim();              item.Remark = tbxRemark.Text.Trim();                       menuManager.SaveXRole(item);              ExtAspNet.Alert.Show("Save successfully");  }

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

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

ASP.NET Web開發中如何進行數據輸入窗體

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

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

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

public override EntityBase2 LoadEntity(string customerNo)   {       IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();       BlotterEntity customer = manager.GetBlotter(Convert.ToInt16(customerNo));       return customer;   }        public override void DeleteEntity(EntityBase2 entity)   {       BlotterEntity user = (BlotterEntity)entity;       IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();       manager.DeleteBlotter(user);   }    public override void SaveEntity(EntityBase2 entity)   {       BlotterEntity user = (BlotterEntity)entity;       IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();       manager.SaveBlotter(user);   }

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

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

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

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

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

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

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

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

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

ReflectionHelper.SetPropertyValue(textbox, targetProperty, obj);

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

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

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

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

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

ASP.NET Web開發中如何進行數據輸入窗體 

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

protected override void InitNavigator(EntityBase2 entity)  {         SalesOrderEntity user = (SalesOrderEntity)entity;         Grid1.DataSource = user.SalesOrderDetails;         Grid1.DataBind();  }

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

上述就是小編為大家分享的ASP.NET Web開發中如何進行數據輸入窗體了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽库县| 鸡西市| 喜德县| 正宁县| 资源县| 淮北市| 法库县| 宜兰县| 宁化县| 柏乡县| 桑植县| 阿拉善左旗| 南和县| 鄄城县| 斗六市| 乾安县| 东乡县| 黄陵县| 鸡泽县| 德安县| 福建省| 岳阳市| 沅江市| 安阳市| 德化县| 文成县| 霍山县| 云霄县| 隆尧县| 山丹县| 丹巴县| 长沙市| 万荣县| 酒泉市| 尤溪县| 太康县| 固安县| 新郑市| 泽普县| 富平县| 乐都县|