ObjectDataSource.DataObjectTypeName Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é
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, Name
et Number
. La Insert
méthode de la AggregateData
classe prend un paramètre de type NewData
. La TypeName
propriété de est ObjectDataSource définie sur AggregateData
et la DataObjectTypeName propriété a la valeur 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 aux Updateméthodes , Insertet Delete , vous pouvez créer un objet qui agrège plusieurs valeurs de champ de données. Cet objet unique 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 comporte 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 unique 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, afin que le ObjectDataSource contrôle puisse créer une instance du type . Le type doit également avoir des propriétés settables qui permettent au ObjectDataSource contrôle de remplir l’objet avec des valeurs transmises à partir du contrôle lié aux données. Les noms de propriétés sur le ObjectDataSource contrôle doivent 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 à la DataObjectTypeName propriété du ObjectDataSourceView qui est associée au ObjectDataSource contrôle.