ObjectDataSource.DataObjectTypeName Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.