ObjectDataSource的DataObjectTypeName 属性

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

 

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

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

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

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

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

 

示例
--------------------------------------------------------------------------------

本节包含两个代码示例。第一个代码示例演示如何使用 DataObjectTypeName 属性,实现一个将所有参数值合并为一个对象的类型。第二个代码示例演示了使用第一个示例中的两个类的网页。

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

 

ExpandedBlockStart.gif 代码
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; }
        }

    }
}

 

 

 

ExpandedBlockStart.gif 代码
<% @ 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 >

 

 

转载于:https://www.cnblogs.com/Fskjb/archive/2010/05/08/1730333.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值