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属性
-
在ASP.NET 2.0中操作数据之六:编程设置ObjectDataSource的参数值
-
在ASP.NET 2.0中操作数据之三十二:数据控件的嵌套
-
在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件
-
ASP.NET中ImageButton图片按钮控件的使用
-
ASP.NET中 CheckBox复选框控件的使用
-
ASP.NET中Validation验证控件正则表达式特殊符号的说明
-
ASP.NET 中 Button、LinkButton和ImageButton 三种控件的使用详解
-
ASP.NET 中ImageMap控件的用法
-
ASP.NET中Literal控件的使用方法 原创