ASP.NET中 ObjectDataSource控件的DataObjectTypeName属性
来源: 阅读:793 次 日期:2016-08-09 15:09:47
温馨提示: 小编为您整理了“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; }

    }

  }

}

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map