ObjectDataSource.DataObjectTypeName ObjectDataSource.DataObjectTypeName ObjectDataSource.DataObjectTypeName ObjectDataSource.DataObjectTypeName Property

定义

获取或设置某个类的名称,ObjectDataSource 控件将该类用于更新、插入或删除数据操作中的参数,而不是从数据绑定控件传递个别的值。Gets or sets the name of a class that the ObjectDataSource control uses for a parameter in an update, insert, or delete data operation, instead of passing individual values from the data-bound control.

public:
 property System::String ^ DataObjectTypeName { System::String ^ get(); void set(System::String ^ value); };
public string DataObjectTypeName { get; set; }
member this.DataObjectTypeName : string with get, set
Public Property DataObjectTypeName As String

属性值

部分或完全限定类名,用于标识可由 ObjectDataSource 用作 Insert()Update()Delete() 操作的参数的对象类型。A partially or fully qualified class name that identifies the type of the object that the ObjectDataSource can use as a parameter for an Insert(), Update(), or a Delete() operation. 默认值为空字符串("")。The default is an empty string ("").

示例

节包含两个代码示例。The section contains two code examples. 第一个代码示例演示如何使用DataObjectTypeName属性实现将所有参数值组合为一个对象的类型。The first code example demonstrates how to implement a type that combines all parameter values into one object, using the DataObjectTypeName property. 第二个代码示例演示使用第一个代码示例中使用的两个类的网页。The second code example shows the Web page that uses the two classes that are used in the first code example.

下面的代码示例演示如何使用DataObjectTypeName属性实现将所有参数值组合为一个对象的类型。The following code example demonstrates how to implement a type that combines all parameter values into one object, using the DataObjectTypeName property. AggregateData类的 select 方法返回一个DataTable具有两个名为NameNumber的列的对象。The select method of the AggregateData class returns a DataTable object with two columns named Name and Number. 同样, NewData类定义了两个读/写属性Name : Number和。Similarly, the NewData class defines two read/write properties, Name and Number. AggregateData NewData类的Insert方法采用一个类型的参数。The Insert method of the AggregateData class takes one parameter of type NewData. NewDataTypeName AggregateData属性设置为,并且DataObjectTypeName属性设置为。 ObjectDataSourceThe TypeName property of the ObjectDataSource is set to AggregateData and the DataObjectTypeName property is set to NewData.

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

    }
}
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls

Namespace Samples.AspNet.VB

    Public Class AggregateData

        Public Sub New()
        End Sub

        Shared table As DataTable

        Private Function CreateData() As DataTable
            table = New DataTable()
            table.Columns.Add("Name", GetType(String))
            table.Columns.Add("Number", GetType(Integer))
            table.Rows.Add(New Object() {"one", 1})
            table.Rows.Add(New Object() {"two", 2})
            table.Rows.Add(New Object() {"three", 3})
            Return table
        End Function

        Public Function SelectMethod() As DataTable
            If table Is Nothing Then
                Return CreateData()
            Else
                Return table
            End If
        End Function


        Public Function Insert(ByVal newRecord As NewData) As Integer

            table.Rows.Add(New Object() {newRecord.Name, newRecord.Number})
            Return 1
        End Function
    End Class


    Public Class NewData

        Private nameValue As String
        Private numberValue As Integer

        Public Property Name() As String
            Get
                Return nameValue
            End Get
            Set(ByVal value As String)
                nameValue = value
            End Set
        End Property

        Public Property Number() As Integer
            Get
                Return numberValue
            End Get
            Set(ByVal value As Integer)
                numberValue = value
            End Set
        End Property
    End Class
End Namespace

下面的代码示例演示使用前面的代码示例中使用的两个类的网页。The following code example shows the Web page that uses the two classes that are used in the preceding code example.

<%@ 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>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Page Language="VB" %>

<!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.VB.NewData"
            InsertMethod="Insert" 
            SelectMethod="SelectMethod" 
            TypeName="Samples.AspNet.VB.AggregateData">
        </asp:ObjectDataSource>
    </div>
    </form>
</body>
</html>

注解

您可以创建一个聚合多个数据字段值UpdateInsert对象, Delete而不是指定传递给、和方法的多个参数。Instead of specifying several parameters that are passed to the Update, Insert, and Delete methods, you can create one object that aggregates several data field values. 此对象将传递给方法, 而不是多个参数。This one object is passed to the methods, instead of several parameters.

绑定到数据绑定控件ObjectDataSource的控件的默认行为是: 数据绑定控件为数据源中的每个参数创建Parameter一个对象。The default behavior of an ObjectDataSource control that is bound to a data-bound control is that the data-bound control creates a Parameter object for each parameter in the data source. 如果业务对象具有多个字段, 则生成的方法还会有多个字段。If the business object has many fields, the resulting method also has many fields. 使用DataObjectTypeName属性可以指定具有每个数据字段的属性的类型。The DataObjectTypeName property allows you to specify a type that has a property for each data field. 然后, 运行时将创建一个对象并设置其所有属性, 而不是向方法传递多个参数。Then, instead of passing several parameters to the method, the runtime creates one object and sets all of its properties. 此对象将添加到方法调用的 parameters 集合。This one object is added to the parameters collection for the method call.

DataObjectTypeName属性指定的类型必须具有无参数的无参数构造函数, 因此该ObjectDataSource控件可以创建类型的实例。The type that is specified by the DataObjectTypeName property must have a parameterless constructor that has no parameters, so the ObjectDataSource control can create an instance of the type. 该类型还必须具有可设置的属性, ObjectDataSource这些属性允许控件使用从数据绑定控件传递的值填充对象。The type must also have settable properties that allow the ObjectDataSource control to populate the object with values that are passed from the data-bound control. ObjectDataSource控件上的属性名称应与数据绑定控件传递的值的参数名称完全匹配。The property names on the ObjectDataSource control are expected to exactly match the parameter names of values that are passed by the data-bound control.

如果设置DataObjectTypeName了属性ObjectDataSource并且控件与数据绑定控件关联, 则InsertMethodDeleteMethod属性指定的方法必须每个都有一个类型的参数, 该类型在DataObjectTypeName属性。When the DataObjectTypeName property is set and the ObjectDataSource control is associated with a data-bound control, the methods that are specified by the InsertMethod and DeleteMethod properties must each have one parameter of the type that is specified in the DataObjectTypeName property. 如果将OverwriteChanges UpdateMethod属性设置为值, 则由属性指定的方法必须具有在DataObjectTypeName属性中指定的类型的一个参数。 ConflictDetectionIf the ConflictDetection property is set to the OverwriteChanges value, the method that is specified by the UpdateMethod property must have one parameter of the type that is specified in the DataObjectTypeName property. 如果将CompareAllValues UpdateMethod属性设置为值, 则由属性指定的方法必须具有在DataObjectTypeName属性中指定的类型的两个参数。 ConflictDetectionIf the ConflictDetection property is set to the CompareAllValues value, the method that is specified by the UpdateMethod property must have two parameters of the type that is specified in the DataObjectTypeName property. 第一个参数包含原始值;第二个参数包含新值。The first parameter contains the original values; the second parameter contains the new values.

属性委托ObjectDataSourceView DataObjectTypeName给与ObjectDataSource控件关联的的属性。 DataObjectTypeNameThe DataObjectTypeName property delegates to the DataObjectTypeName property of the ObjectDataSourceView that is associated with the ObjectDataSource control.

适用于

另请参阅