当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET中 ObjectDataSource控件的DataObjectTypeName属性

ASP.NET中 ObjectDataSource控件的DataObjectTypeName属性

2017年12月12日  | 移动技术网IT编程  | 我要评论

热奇,sql2005开发版下载,德美思嘉

一、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; }
    }

  }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网