ObjectDataSource.DataObjectTypeName Egenskap

Definition

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.

Gäller för

Se även