ObjectDataSource.DataObjectTypeName Eigenschaft

Definition

Ruft den Namen einer Klasse ab, die vom ObjectDataSource-Steuerelement als Parameter bei Datenvorgängen vom Typ Aktualisieren, Einfügen oder Löschen verwendet wird, anstatt einzelne Werte aus dem datengebundenen Steuerelement zu übergeben, oder legt diesen fest.

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

Eigenschaftswert

String

Ein teilweise oder vollqualifizierter Klassenname, der den Typ des Objekts angibt, das die ObjectDataSource als Parameter für einen der Vorgänge Insert(), Update() oder Delete() verwenden kann. Der Standardwert ist eine leere Zeichenfolge ("").

Beispiele

Der Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie ein Typ implementiert wird, der alle Parameterwerte in einem Objekt kombiniert, wobei die DataObjectTypeName Eigenschaft verwendet wird. Das zweite Codebeispiel zeigt die Webseite, die die beiden Klassen verwendet, die im ersten Codebeispiel verwendet werden.

Im folgenden Codebeispiel wird veranschaulicht, wie ein Typ implementiert wird, der alle Parameterwerte in einem Objekt kombiniert, wobei die DataObjectTypeName Eigenschaft verwendet wird. Die Select-Methode der AggregateData Klasse gibt ein DataTable Objekt mit zwei Spalten namens Name und Number. Ebenso definiert die NewData Klasse zwei Lese-/Schreibeigenschaften und Name Number. Die Insert Methode der AggregateData Klasse verwendet einen Parameter vom Typ NewData. Die TypeName Eigenschaft der ObjectDataSource Eigenschaft ist auf festgelegt AggregateData , und die DataObjectTypeName Eigenschaft ist auf NewDatafestgelegt.

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

Das folgende Codebeispiel zeigt die Webseite, die die beiden Klassen verwendet, die im vorherigen Codebeispiel verwendet werden.

<%@ 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>

Hinweise

Anstatt mehrere Parameter anzugeben, die an die Update, Insertund Delete Methoden übergeben werden, können Sie ein Objekt erstellen, das mehrere Datenfeldwerte aggregiert. Dieses objekt wird an die Methoden übergeben, anstatt mehrere Parameter.

Das Standardverhalten eines ObjectDataSource Steuerelements, das an ein datengebundenes Steuerelement gebunden ist, besteht darin, dass das datengebundene Steuerelement ein Parameter Objekt für jeden Parameter in der Datenquelle erstellt. Wenn das Geschäftsobjekt viele Felder aufweist, weist die resultierende Methode auch viele Felder auf. Mit der DataObjectTypeName Eigenschaft können Sie einen Typ angeben, der über eine Eigenschaft für jedes Datenfeld verfügt. Statt mehrere Parameter an die Methode zu übergeben, erstellt die Laufzeit ein Objekt und legt alle eigenschaften fest. Dieses objekt wird der Parameterauflistung für den Methodenaufruf hinzugefügt.

Der typ, der von der DataObjectTypeName Eigenschaft angegeben wird, muss einen parameterlosen Konstruktor haben, der keine Parameter enthält, sodass das ObjectDataSource Steuerelement eine Instanz des Typs erstellen kann. Der Typ muss auch über settable-Eigenschaften verfügen, mit denen das ObjectDataSource Steuerelement das Objekt mit Werten auffüllen kann, die vom datengebundenen Steuerelement übergeben werden. Die Eigenschaftennamen des ObjectDataSource Steuerelements werden voraussichtlich genau mit den Parameternamen von Werten übereinstimmen, die vom datengebundenen Steuerelement übergeben werden.

Wenn die DataObjectTypeName Eigenschaft festgelegt wird und das ObjectDataSource Steuerelement einem datengebundenen Steuerelement zugeordnet ist, müssen die methoden, die von den InsertMethod Eigenschaften DeleteMethod angegeben werden, jeweils einen Parameter des Typs aufweisen, der in der DataObjectTypeName Eigenschaft angegeben ist. Wenn die Eigenschaft auf den OverwriteChanges Wert festgelegt ist, muss die ConflictDetection durch die UpdateMethod Eigenschaft angegebene Methode einen Parameter des Typs aufweisen, der in der DataObjectTypeName Eigenschaft angegeben ist. Wenn die Eigenschaft auf den CompareAllValues Wert festgelegt ist, muss die ConflictDetection durch die UpdateMethod Eigenschaft angegebene Methode zwei Parameter des Typs aufweisen, der in der DataObjectTypeName Eigenschaft angegeben ist. Der erste Parameter enthält die ursprünglichen Werte; der zweite Parameter enthält die neuen Werte.

Die DataObjectTypeName Eigenschaft delegiert an die DataObjectTypeName Eigenschaft des ObjectDataSourceView Steuerelements, das dem ObjectDataSource Steuerelement zugeordnet ist.

Gilt für

Siehe auch