ObjectDataSource.DataObjectTypeName Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger namnet på en klass som ObjectDataSource kontrollen använder för en parameter i en uppdaterings-, infognings- eller borttagningsåtgärd i stället för att skicka enskilda värden från den databundna kontrollen.
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
Egenskapsvärde
Ett delvis eller fullständigt kvalificerat klassnamn som identifierar typen av objekt som ObjectDataSource kan användas som en parameter för en Insert(), Update()eller en Delete() åtgärd. Standardvärdet är en tom sträng ("").
Exempel
Avsnittet innehåller två kodexempel. Det första kodexemplet visar hur du implementerar en typ som kombinerar alla parametervärden i ett objekt med hjälp av DataObjectTypeName egenskapen . Det andra kodexemplet visar webbsidan som använder de två klasser som används i det första kodexemplet.
Följande kodexempel visar hur du implementerar en typ som kombinerar alla parametervärden till ett objekt med hjälp av DataObjectTypeName egenskapen . Metoden select för AggregateData klassen returnerar ett DataTable objekt med två kolumner med namnet Name och Number.
NewData På samma sätt definierar klassen två läs-/skrivegenskaper Name och Number. Metoden Insert för AggregateData klassen tar en parameter av typen NewData. Egenskapen TypeName för är inställd på ObjectDataSourceAggregateData och egenskapen DataObjectTypeName är inställd på 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
Följande kodexempel visar webbsidan som använder de två klasser som används i föregående kodexempel.
<%@ 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>
Kommentarer
I stället för att ange flera parametrar som skickas till Updatemetoderna , Insertoch Delete kan du skapa ett objekt som aggregerar flera datafältvärden. Det här objektet skickas till metoderna i stället för flera parametrar.
Standardbeteendet för en ObjectDataSource kontroll som är bunden till en databunden kontroll är att den databundna kontrollen skapar ett Parameter objekt för varje parameter i datakällan. Om affärsobjektet har många fält har den resulterande metoden också många fält. Med DataObjectTypeName egenskapen kan du ange en typ som har en egenskap för varje datafält. I stället för att skicka flera parametrar till metoden skapar körningen sedan ett objekt och anger alla dess egenskaper. Det här objektet läggs till i parametersamlingen för metodanropet.
Den typ som anges av DataObjectTypeName egenskapen måste ha en parameterlös konstruktor som inte har några parametrar, så ObjectDataSource kontrollen kan skapa en instans av typen. Typen måste också ha inställbara egenskaper som gör att kontrollen kan ObjectDataSource fylla objektet med värden som skickas från den databundna kontrollen. Egenskapsnamnen på ObjectDataSource kontrollen förväntas exakt matcha parameternamnen för värden som skickas av den databundna kontrollen.
När egenskapen DataObjectTypeName har angetts och ObjectDataSource kontrollen är associerad med en databunden kontroll måste de metoder som anges av InsertMethod egenskaperna och DeleteMethod ha en parameter av den typ som anges i DataObjectTypeName egenskapen. Om egenskapen ConflictDetection är inställd på OverwriteChanges värdet måste metoden som anges av UpdateMethod egenskapen ha en parameter av den typ som anges i DataObjectTypeName egenskapen. Om egenskapen ConflictDetection är inställd på CompareAllValues värdet måste metoden som anges av UpdateMethod egenskapen ha två parametrar av den typ som anges i DataObjectTypeName egenskapen. Den första parametern innehåller de ursprungliga värdena. den andra parametern innehåller de nya värdena.
Egenskapen DataObjectTypeName delegerar till DataObjectTypeName egenskapen för den ObjectDataSourceView som är associerad med ObjectDataSource kontrollen.