• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 广告控件AdRotator的使用方法与实例
    • ASP.NET笔记之广告控件的使用方法
    • ASP.NET 网站开发中常用到的广告效果代码
    • Asp.net中使用文本框的值动态生成控件的方法
    • 获取asp.net服务器控件的客户端ID和Name的实现方法
    • asp.net控件DataList分页用法
    • ASP.NET项目开发中日期控件DatePicker如何使用
    • ASP.NET的广告控件AdRotator用法分析
    上一篇:ASP.NET中Literal与Label控件的区别
    下一篇:Asp.net页面中调用soapheader进行验证的操作步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP.NET中 ObjectDataSource控件的DataObjectTypeName属性 ASP.NET,中,ObjectDataSource,控件,