ObjectDataSource.DataObjectTypeName Propriété

Définition

Obtient ou définit le nom d'une classe utilisée par le contrôle ObjectDataSource pour un paramètre dans une opération de mise à jour, d'insertion ou de suppression, au lieu de passer les valeurs individuelles du contrôle lié aux données.

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

Valeur de propriété

String

Nom de classe complètement ou partiellement qualifié qui identifie le type de l'objet que ObjectDataSource peut utiliser comme paramètre pour une opération Insert(), Update() ou Delete(). La valeur par défaut est une chaîne vide ("").

Exemples

La section contient deux exemples de code. Le premier exemple de code montre comment implémenter un type qui combine toutes les valeurs de paramètre en un seul objet, à l’aide de la DataObjectTypeName propriété. Le deuxième exemple de code montre la page Web qui utilise les deux classes utilisées dans le premier exemple de code.

L’exemple de code suivant montre comment implémenter un type qui combine toutes les valeurs de paramètre en un seul objet, à l’aide de la DataObjectTypeName propriété. La méthode select de la AggregateData classe retourne un DataTable objet avec deux colonnes nommées Name et Number. De même, la NewData classe définit deux propriétés en lecture/écriture et Name Number. La Insert méthode de la AggregateData classe prend un paramètre de type NewData. La TypeName propriété du ObjectDataSource paramètre est définie AggregateData et la DataObjectTypeName propriété est définie sur 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

L’exemple de code suivant montre la page Web qui utilise les deux classes utilisées dans l’exemple de code précédent.

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

Remarques

Au lieu de spécifier plusieurs paramètres passés à l’objet Update, Insertet Delete aux méthodes, vous pouvez créer un objet qui agrège plusieurs valeurs de champ de données. Cet objet est passé aux méthodes, au lieu de plusieurs paramètres.

Le comportement par défaut d’un ObjectDataSource contrôle lié à un contrôle lié aux données est que le contrôle lié aux données crée un Parameter objet pour chaque paramètre de la source de données. Si l’objet métier a de nombreux champs, la méthode résultante comporte également de nombreux champs. La DataObjectTypeName propriété vous permet de spécifier un type qui a une propriété pour chaque champ de données. Ensuite, au lieu de passer plusieurs paramètres à la méthode, le runtime crée un objet et définit toutes ses propriétés. Cet objet est ajouté à la collection de paramètres pour l’appel de méthode.

Le type spécifié par la DataObjectTypeName propriété doit avoir un constructeur sans paramètre qui n’a aucun paramètre. Le ObjectDataSource contrôle peut donc créer une instance du type. Le type doit également avoir des propriétés settables qui permettent au contrôle de remplir l’objet ObjectDataSource avec des valeurs transmises à partir du contrôle lié aux données. Les noms de propriétés sur le ObjectDataSource contrôle sont censés correspondre exactement aux noms de paramètres des valeurs transmises par le contrôle lié aux données.

Lorsque la DataObjectTypeName propriété est définie et que le ObjectDataSource contrôle est associé à un contrôle lié aux données, les méthodes spécifiées par les InsertMethod propriétés et DeleteMethod doivent chacune avoir un paramètre du type spécifié dans la DataObjectTypeName propriété. Si la ConflictDetection propriété est définie sur la OverwriteChanges valeur, la méthode spécifiée par la UpdateMethod propriété doit avoir un paramètre du type spécifié dans la DataObjectTypeName propriété. Si la ConflictDetection propriété est définie sur la CompareAllValues valeur, la méthode spécifiée par la UpdateMethod propriété doit avoir deux paramètres du type spécifié dans la DataObjectTypeName propriété. Le premier paramètre contient les valeurs d’origine ; le deuxième paramètre contient les nouvelles valeurs.

La DataObjectTypeName propriété délègue ObjectDataSource à la DataObjectTypeName propriété du ObjectDataSourceView contrôle.

S’applique à

Voir aussi