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.
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 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 NewData
festgelegt.
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.