温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET中ObjectDataSource控件DataObjectTypeName属性怎么用

发布时间:2021-09-16 16:41:19 来源:亿速云 阅读:183 作者:小新 栏目:开发技术

小编给大家分享一下ASP.NET中ObjectDataSource控件DataObjectTypeName属性怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、ObjectDataSource 控件说明

获取或设置某个类的名称,ObjectDataSource 控件将该类用于更新、插入或删除数据操作中的参数,而不是从数据绑定控件传递个别的值。

您不用指定传递给 Update、Insert 和 Delete 方法的多个参数,而是可以创建一个累计多个数据字段值的对象。仅给方法传递这一个对象,而不是多个参数。

绑定到数据绑定控件的 ObjectDataSource 控件的默认行为是,数据绑定控件为数据源中的每个参数创建一个 Parameter 对象。如果业务对象有很多字段,则结果方法也有很多字段。DataObjectTypeName 属性允许您为每个数据字段都指定一个具有属性的类型。这样,运行时不是给方法传递多个参数,而是创建一个对象并设置它的所有属性。这一个对象添加到方法调用的参数集合中。

二、DataObjectTypeName 属性的使用

DataObjectTypeName 属性指定的类型必须有一个不带参数的默认构造函数,以便 ObjectDataSource 控件可以创建此类型的实例。此类型还必须具有可设置的属性,允许 ObjectDataSource 控件用数据绑定控件传递的值填充对象。ObjectDataSource 控件的属性名应该与数据绑定控件传递的值的参数名完全匹配。

当设置了 DataObjectTypeName 属性并且 ObjectDataSource 控件与数据绑定控件关联时,由 InsertMethod 和 DeleteMethod 属性指定的方法必须各有一个在 DataObjectTypeName 属性中指定的类型的参数。如果 ConflictDetection 属性设置为 OverwriteChanges 值,则由 UpdateMethod 属性指定的方法必须有一个在 DataObjectTypeName 属性中指定的类型的参数。如果 ConflictDetection 属性设置为 CompareAllValues 值,则由 UpdateMethod 属性指定的方法必须有两个在 DataObjectTypeName 属性中指定的类型的参数。第一个参数包含原始值;第二个参数包含新值。

DataObjectTypeName 属性委托给与 ObjectDataSource 控件关联的 ObjectDataSourceView 的 DataObjectTypeName 属性。

三、示例代码

下面的代码示例演示如何使用 DataObjectTypeName 属性,实现一个将所有参数值合并为一个对象的类型。AggregateData 类的选择方法返回一个有两个名为 Name 和 Number 的列的 DataTable 对象。同样,NewData 类定义两个读/写属性 Name 和 Number。AggregateData 类的 Insert 方法带 NewData 类型的一个参数。ObjectDataSource 的 TypeName 属性设置为 AggregateData,DataObjectTypeName 属性设置为 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; }     }   } }

看完了这篇文章,相信你对“ASP.NET中ObjectDataSource控件DataObjectTypeName属性怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI