Freigeben über


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

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 mit der DataObjectTypeName -Eigenschaft in einem -Objekt kombiniert. Das zweite Codebeispiel zeigt die Webseite, die die beiden Klassen verwendet, die im ersten Codebeispiel verwendet werden.

Im folgenden Codebeispiel wird veranschaulicht, wie sie mithilfe der -Eigenschaft einen Typ implementieren, der DataObjectTypeName alle Parameterwerte in einem -Objekt kombiniert. Die select-Methode der AggregateData -Klasse gibt ein DataTable -Objekt mit zwei Spalten mit den Namen Name und Numberzurück. Auf ähnliche Weise definiert die NewData -Klasse zwei Lese-/Schreibeigenschaften, Name und Number. Die Insert -Methode der AggregateData -Klasse akzeptiert einen Parameter vom Typ NewData. Die TypeName -Eigenschaft von ObjectDataSource ist auf AggregateData festgelegt, 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 UpdateMethoden , Insertund Delete übergeben werden, können Sie ein Objekt erstellen, das mehrere Datenfeldwerte aggregiert. Dieses eine 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 für jeden Parameter in der Datenquelle ein Parameter -Objekt erstellt. Wenn das Geschäftsobjekt über viele Felder verfügt, enthält die resultierende Methode auch viele Felder. Mit DataObjectTypeName der -Eigenschaft können Sie einen Typ angeben, der über eine -Eigenschaft für jedes Datenfeld verfügt. Anstatt dann mehrere Parameter an die -Methode zu übergeben, erstellt die Laufzeit ein -Objekt und legt alle ihre Eigenschaften fest. Dieses eine Objekt wird der Parameters-Auflistung für den Methodenaufruf hinzugefügt.

Der von der DataObjectTypeName -Eigenschaft angegebene Typ muss über einen parameterlosen Konstruktor ohne Parameter verfügen, damit das ObjectDataSource Steuerelement eine Instanz des Typs erstellen kann. Der Typ muss auch über festlegbare Eigenschaften verfügen, die es dem ObjectDataSource Steuerelement ermöglichen, das Objekt mit Werten aufzufüllen, die vom datengebundenen Steuerelement übergeben werden. Es wird erwartet, dass die Eigenschaftennamen im ObjectDataSource Steuerelement genau mit den Parameternamen von Werten übereinstimmen, die vom datengebundenen Steuerelement übergeben werden.

Wenn die DataObjectTypeName -Eigenschaft festgelegt ist und das ObjectDataSource Steuerelement einem datengebundenen Steuerelement zugeordnet ist, müssen die Methoden, die von den InsertMethod Eigenschaften und DeleteMethod angegeben werden, jeweils einen Parameter des Typs aufweisen, der in der DataObjectTypeName -Eigenschaft angegeben ist. Wenn die ConflictDetection -Eigenschaft auf den OverwriteChanges -Wert festgelegt ist, muss die methode, die von der UpdateMethod -Eigenschaft angegeben wird, über einen Parameter des Typs verfügen, der in der DataObjectTypeName -Eigenschaft angegeben ist. Wenn die ConflictDetection -Eigenschaft auf den CompareAllValues -Wert festgelegt ist, muss die methode, die von der UpdateMethod -Eigenschaft angegeben wird, über zwei Parameter des Typs verfügen, 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 , die ObjectDataSourceView dem ObjectDataSource -Steuerelement zugeordnet ist.

Gilt für:

Weitere Informationen