Freigeben über


ObjectDataSource.DataObjectTypeName Eigenschaft

Definition

Dient zum Abrufen oder Festlegen des Namens einer Klasse, die das ObjectDataSource Steuerelement für einen Parameter in einem Aktualisierungs-, Einfügen- oder Löschen-Datenvorgang verwendet, anstatt einzelne Werte aus dem datengebundenen Steuerelement zu übergeben.

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 identifiziert, das der ObjectDataSource Objekttyp als Parameter für einen Insert(), Update()oder einen Delete() Vorgang 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 ein Typ implementiert wird, der alle Parameterwerte mit der DataObjectTypeName Eigenschaft in einem Objekt kombiniert. 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 NameNumber. Die Insert Methode der AggregateData Klasse verwendet einen Parameter vom Typ NewData. Die TypeName Eigenschaft der ObjectDataSource Eigenschaft ist auf und AggregateData die DataObjectTypeName Eigenschaft auf .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

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 InsertDelete und Methoden übergeben werden, können Sie ein Objekt erstellen, das mehrere Datenfeldwerte aggregiert. Dieses ein Objekt wird anstelle mehrerer Parameter an die Methoden übergeben.

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 enthält, 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. Anstatt dann mehrere Parameter an die Methode zu übergeben, erstellt die Laufzeit ein Objekt und legt alle zugehörigen Eigenschaften fest. Dieses ein Objekt wird der Parameterauflistung für den Methodenaufruf hinzugefügt.

Der von der DataObjectTypeName Eigenschaft angegebene Typ muss über einen parameterlosen Konstruktor verfügen, der keine Parameter enthält, sodass das ObjectDataSource Steuerelement eine Instanz des Typs erstellen kann. Der Typ muss auch über festgelegte Eigenschaften verfügen, mit denen das ObjectDataSource Steuerelement das Objekt mit Werten füllen kann, die vom datengebundenen Steuerelement übergeben werden. Es wird erwartet, dass die Eigenschaftennamen des ObjectDataSource Steuerelements exakt mit den Parameternamen der Werte ü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 durch die und DeleteMethod die InsertMethod Eigenschaften angegeben werden, über einen Parameter des Typs verfügen, der in der DataObjectTypeName Eigenschaft angegeben ist. Wenn die Eigenschaft auf den OverwriteChanges Wert festgelegt ist, muss die ConflictDetection von der UpdateMethod Eigenschaft angegebene Methode über einen Parameter des Typs verfügen, der in der DataObjectTypeName Eigenschaft angegeben ist. Wenn die Eigenschaft auf den CompareAllValues Wert festgelegt ist, muss die ConflictDetection von der 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 Steuerelements, das ObjectDataSourceView dem ObjectDataSource Steuerelement zugeordnet ist.

Gilt für:

Weitere Informationen