Sdílet prostřednictvím


ObjectDataSource.DataObjectTypeName Vlastnost

Definice

Získá nebo nastaví název třídy, který ObjectDataSource ovládací prvek používá pro parametr v operaci aktualizace, vložení nebo odstranění dat, místo předání jednotlivých hodnot z ovládacího prvku vázaného na data.

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

Hodnota vlastnosti

Částečně nebo plně kvalifikovaný název třídy, který identifikuje typ objektu, který ObjectDataSource může použít jako parametr pro Insert(), Update()nebo Delete() operaci. Výchozí hodnota je prázdný řetězec ("").

Příklady

Oddíl obsahuje dva příklady kódu. První příklad kódu ukazuje, jak implementovat typ, který kombinuje všechny hodnoty parametrů do jednoho objektu DataObjectTypeName pomocí vlastnosti . Druhý příklad kódu ukazuje webovou stránku, která používá dvě třídy, které se používají v prvním příkladu kódu.

Následující příklad kódu ukazuje, jak implementovat typ, který kombinuje všechny hodnoty parametrů do jednoho objektu DataObjectTypeName pomocí vlastnosti . Metoda AggregateData select třídy vrátí objekt se DataTable dvěma sloupci s názvem Name a Number. Podobně NewData třída definuje dvě vlastnosti čtení a zápisu Name a Number. Metoda InsertAggregateData třídy přebírá jeden parametr typu NewData. Vlastnost TypeName je nastavena ObjectDataSource na AggregateData a DataObjectTypeName vlastnost je nastavena na 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

Následující příklad kódu ukazuje webovou stránku, která používá dvě třídy, které se používají v předchozím příkladu kódu.

<%@ 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>

Poznámky

Místo zadání několika parametrů, které jsou předány Updatemetodám , Inserta Delete , můžete vytvořit jeden objekt, který agreguje několik hodnot datových polí. Tento jeden objekt se předá metodám místo několika parametrů.

Výchozí chování ovládacího prvku ObjectDataSource , který je vázán na ovládací prvek vázané na data, je, že ovládací prvek vázaný na Parameter data vytvoří objekt pro každý parametr ve zdroji dat. Pokud obchodní objekt obsahuje mnoho polí, má výsledná metoda také mnoho polí. Vlastnost DataObjectTypeName umožňuje zadat typ, který má vlastnost pro každé datové pole. Pak místo předání několika parametrů metodě modul runtime vytvoří jeden objekt a nastaví všechny jeho vlastnosti. Tento jeden objekt se přidá do kolekce parametrů pro volání metody.

Typ určený DataObjectTypeName vlastností musí mít konstruktor bez parametrů, který nemá žádné parametry, aby ObjectDataSource ovládací prvek mohl vytvořit instanci typu. Typ musí mít také nastavené vlastnosti, které ovládacímu prvku umožňují ObjectDataSource naplnit objekt hodnotami, které jsou předány z ovládacího prvku vázaného na data. U názvů ObjectDataSource vlastností ovládacího prvku se očekává, že přesně odpovídají názvům parametrů hodnot, které jsou předány ovládacím prvku vázaným na data.

DataObjectTypeName Pokud je vlastnost nastavena a ObjectDataSource ovládací prvek je přidružen k ovládacímu prvku vázanému na data, metody určené vlastnostmi InsertMethod a DeleteMethod musí mít každý jeden parametr typu, který je zadán ve DataObjectTypeName vlastnosti. ConflictDetection Pokud je vlastnost nastavena na OverwriteChanges hodnotu, metoda určená UpdateMethod vlastností musí mít jeden parametr typu, který je zadán ve DataObjectTypeName vlastnosti. ConflictDetection Pokud je vlastnost nastavena na CompareAllValues hodnotu, metoda určená UpdateMethod vlastností musí mít dva parametry typu, který je zadán ve DataObjectTypeName vlastnosti. První parametr obsahuje původní hodnoty; druhý parametr obsahuje nové hodnoty.

Vlastnost DataObjectTypeName deleguje vlastnost DataObjectTypeNameObjectDataSourceView , která je přidružena k ovládacímu ObjectDataSource prvku.

Platí pro

Viz také