ObjectDataSource.DataObjectTypeName Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe ou define o nome de uma classe que o ObjectDataSource controlo usa para um parâmetro numa operação de atualização, inserção ou eliminação de dados, em vez de passar valores individuais do controlo ligado aos dados.
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
Valor de Propriedade
Um nome de classe parcial ou totalmente qualificado que identifica o tipo do objeto que pode ObjectDataSource usar como parâmetro para uma Insert(), Update(), ou uma Delete() operação. O padrão é uma cadeia vazia ("").
Exemplos
A secção contém dois exemplos de código. O primeiro exemplo de código demonstra como implementar um tipo que combina todos os valores dos parâmetros num único objeto, usando a DataObjectTypeName propriedade. O segundo exemplo de código mostra a página Web que utiliza as duas classes usadas no primeiro exemplo de código.
O exemplo de código seguinte demonstra como implementar um tipo que combina todos os valores dos parâmetros num único objeto, usando a DataObjectTypeName propriedade. O método select da AggregateData classe devolve um DataTable objeto com duas colunas nomeadas Name e Number. De forma semelhante, a NewData classe define duas propriedades de leitura/escrita, Name e Number. O Insert método da AggregateData classe assume um parâmetro do tipo NewData. A TypeName propriedade de é ObjectDataSource definida como AggregateData e a DataObjectTypeName propriedade é definida como 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
O exemplo de código seguinte mostra a página Web que utiliza as duas classes usadas no exemplo de código anterior.
<%@ 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>
Observações
Em vez de especificar vários parâmetros que são passados aos Updatemétodos , Insert, e Delete , pode criar um objeto que agregue vários valores de campo de dados. Este único objeto é passado aos métodos, em vez de vários parâmetros.
O comportamento padrão de um ObjectDataSource controlo que está ligado a um controlo ligado a dados é que o controlo ligado a dados cria um Parameter objeto para cada parâmetro na fonte de dados. Se o objeto de negócio tiver muitos campos, o método resultante também tem muitos campos. A DataObjectTypeName propriedade permite-lhe especificar um tipo que tem uma propriedade para cada campo de dados. Depois, em vez de passar vários parâmetros ao método, o runtime cria um objeto e define todas as suas propriedades. Este objeto é adicionado à coleção de parâmetros para a chamada ao método.
O tipo especificado pela DataObjectTypeName propriedade deve ter um construtor sem parâmetros que não tenha parâmetros, para que o controlo ObjectDataSource possa criar uma instância do tipo. O tipo deve também ter propriedades configuráveis que permitam ao ObjectDataSource controlo preencher o objeto com valores que são passados pelo controlo data-bound. Espera-se que os nomes das propriedades no ObjectDataSource controlo correspondam exatamente aos nomes dos parâmetros dos valores passados pelo controlo ligado aos dados.
Quando a DataObjectTypeName propriedade está definida e o ObjectDataSource controlo está associado a um controlo ligado a dados, os métodos especificados pelas InsertMethod propriedades e DeleteMethod devem ter cada um um parâmetro do tipo especificado na DataObjectTypeName propriedade. Se a ConflictDetection propriedade estiver definida para o OverwriteChanges valor, o método especificado pela UpdateMethod propriedade deve ter um parâmetro do tipo especificado na DataObjectTypeName propriedade. Se a ConflictDetection propriedade estiver definida para o CompareAllValues valor, o método especificado pela UpdateMethod propriedade deve ter dois parâmetros do tipo especificado na DataObjectTypeName propriedade. O primeiro parâmetro contém os valores originais; o segundo parâmetro contém os novos valores.
A DataObjectTypeName propriedade delega à DataObjectTypeName propriedade do ObjectDataSourceView que está associada ao ObjectDataSource controlo.