ASP.NET中 ObjectDataSource控件的DataObjectTypeName屬性
一、ObjectDataSource 控件說明
獲取或設(shè)置某個類的名稱,ObjectDataSource 控件將該類用于更新、插入或刪除數(shù)據(jù)操作中的參數(shù),而不是從數(shù)據(jù)綁定控件傳遞個別的值。
您不用指定傳遞給 Update、Insert 和 Delete 方法的多個參數(shù),而是可以創(chuàng)建一個累計多個數(shù)據(jù)字段值的對象。僅給方法傳遞這一個對象,而不是多個參數(shù)。
綁定到數(shù)據(jù)綁定控件的 ObjectDataSource 控件的默認行為是,數(shù)據(jù)綁定控件為數(shù)據(jù)源中的每個參數(shù)創(chuàng)建一個 Parameter 對象。如果業(yè)務(wù)對象有很多字段,則結(jié)果方法也有很多字段。DataObjectTypeName 屬性允許您為每個數(shù)據(jù)字段都指定一個具有屬性的類型。這樣,運行時不是給方法傳遞多個參數(shù),而是創(chuàng)建一個對象并設(shè)置它的所有屬性。這一個對象添加到方法調(diào)用的參數(shù)集合中。
二、DataObjectTypeName 屬性的使用
DataObjectTypeName 屬性指定的類型必須有一個不帶參數(shù)的默認構(gòu)造函數(shù),以便 ObjectDataSource 控件可以創(chuàng)建此類型的實例。此類型還必須具有可設(shè)置的屬性,允許 ObjectDataSource 控件用數(shù)據(jù)綁定控件傳遞的值填充對象。ObjectDataSource 控件的屬性名應(yīng)該與數(shù)據(jù)綁定控件傳遞的值的參數(shù)名完全匹配。
當(dāng)設(shè)置了 DataObjectTypeName 屬性并且 ObjectDataSource 控件與數(shù)據(jù)綁定控件關(guān)聯(lián)時,由 InsertMethod 和 DeleteMethod 屬性指定的方法必須各有一個在 DataObjectTypeName 屬性中指定的類型的參數(shù)。如果 ConflictDetection 屬性設(shè)置為 OverwriteChanges 值,則由 UpdateMethod 屬性指定的方法必須有一個在 DataObjectTypeName 屬性中指定的類型的參數(shù)。如果 ConflictDetection 屬性設(shè)置為 CompareAllValues 值,則由 UpdateMethod 屬性指定的方法必須有兩個在 DataObjectTypeName 屬性中指定的類型的參數(shù)。第一個參數(shù)包含原始值;第二個參數(shù)包含新值。
DataObjectTypeName 屬性委托給與 ObjectDataSource 控件關(guān)聯(lián)的 ObjectDataSourceView 的 DataObjectTypeName 屬性。
三、示例代碼
下面的代碼示例演示如何使用 DataObjectTypeName 屬性,實現(xiàn)一個將所有參數(shù)值合并為一個對象的類型。AggregateData 類的選擇方法返回一個有兩個名為 Name 和 Number 的列的 DataTable 對象。同樣,NewData 類定義兩個讀/寫屬性 Name 和 Number。AggregateData 類的 Insert 方法帶 NewData 類型的一個參數(shù)。ObjectDataSource 的 TypeName 屬性設(shè)置為 AggregateData,DataObjectTypeName 屬性設(shè)置為 NewData。
前臺代碼:
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %> <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ObjectDataSource - DataObjectTypeName Property Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateInsertButton="True" DataSourceID="ObjectDataSource1" Height="50px" Width="125px"> </asp:DetailsView> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="Samples.AspNet.CS.NewData" InsertMethod="Insert" SelectMethod="Select" TypeName="Samples.AspNet.CS.AggregateData"> </asp:ObjectDataSource> </div> </form> </body> </html>
后臺代碼:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace Samples.AspNet.CS { /// <summary> /// Summary description for AggregateData /// </summary> public class AggregateData { public AggregateData() { } static DataTable table; private DataTable CreateData() { table = new DataTable(); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Number", typeof(int)); table.Rows.Add(new object[] { "one", 1 }); table.Rows.Add(new object[] { "two", 2 }); table.Rows.Add(new object[] { "three", 3 }); return table; } public DataTable Select() { if (table == null) { return CreateData(); } else { return table; } } public int Insert(NewData newRecord) { table.Rows.Add(new object[] { newRecord.Name, newRecord.Number }); return 1; } } public class NewData { private string nameValue; private int numberValue; public string Name { get { return nameValue; } set { nameValue = value; } } public int Number { get { return numberValue; } set { numberValue = value; } } } }
相關(guān)文章
ASP.NET中 ObjectDataSource控件的DataObjectTypeName屬性
本文主要介紹ObjectDataSource控件和DataObjectTypeName屬性的用法,希望能給小伙伴們一些幫助。2016-04-04Asp.net中Request.Url的各個屬性對應(yīng)的意義介紹
網(wǎng)絡(luò)上關(guān)于Request.Url的說明已經(jīng)很多也很豐富了,但是自己還是實踐了一下,看看最終的結(jié)果與網(wǎng)絡(luò)上的是否一致2012-05-05ABP框架的體系結(jié)構(gòu)及模塊系統(tǒng)講解
ABP框架是基于ASP.NET的Web開發(fā)框架,不過它遵循一種名為DDD(領(lǐng)域驅(qū)動設(shè)計)的設(shè)計模式原則,接下來我們就來看一下ABP框架的體系結(jié)構(gòu)及模塊系統(tǒng)講解2016-06-06ASP.Net?Core?MVC基礎(chǔ)系列之獲取配置信息
這篇文章介紹了ASP.Net?Core?MVC獲取配置信息的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02