ObjectDataSource.DataObjectTypeName Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает имя класса, используемое элементом управления ObjectDataSource в качестве параметра в операции обновления, вставки или удаления данных вместо передачи отдельных значений из элемента управления с привязкой к данным.
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
Значение свойства
Полное или сокращенное имя класса, обозначающее тип объекта, который может использоваться объектом ObjectDataSource в качестве параметра операции Insert(), Update() или Delete(). Значение по умолчанию — пустая строка ("").
Примеры
Раздел содержит два примера кода. В первом примере кода показано, как реализовать тип, объединяющий все значения параметров в один объект с помощью DataObjectTypeName свойства . Во втором примере кода показана веб-страница, использующая два класса, которые используются в первом примере кода.
В следующем примере кода показано, как реализовать тип, объединяющий все значения параметров в один объект с помощью DataObjectTypeName свойства . Метод AggregateData
select класса возвращает DataTable объект с двумя столбцами с именами Name
и Number
. Аналогичным образом класс NewData
определяет два свойства чтения и записи: Name
и Number
. Метод Insert
AggregateData
класса принимает один параметр типа NewData
. Свойству TypeName
ObjectDataSource присваивается значение , AggregateData
а свойству DataObjectTypeName присвоено значение 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
В следующем примере кода показана веб-страница, использующая два класса, которые использовались в предыдущем примере кода.
<%@ 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>
Комментарии
Вместо указания нескольких параметров, передаваемых Updateв методы , Insertи Delete , можно создать один объект, который агрегирует несколько значений полей данных. Этот объект передается в методы вместо нескольких параметров.
По умолчанию ObjectDataSource элемент управления, привязанный к элементу управления с привязкой к данным, заключается в том, что элемент управления с привязкой Parameter к данным создает объект для каждого параметра в источнике данных. Если бизнес-объект содержит много полей, результирующий метод также содержит много полей. Свойство DataObjectTypeName позволяет указать тип, имеющий свойство для каждого поля данных. Затем вместо передачи нескольких параметров методу среда выполнения создает один объект и задает все его свойства. Этот объект добавляется в коллекцию параметров для вызова метода .
Тип, указанный свойством DataObjectTypeName , должен иметь конструктор без параметров, не имеющий параметров, чтобы ObjectDataSource элемент управления смог создать экземпляр типа . Тип также должен иметь настраиваемые свойства, позволяющие ObjectDataSource элементу управления заполнять объект значениями, передаваемыми из элемента управления с привязкой к данным. Имена свойств в элементе ObjectDataSource управления должны точно соответствовать именам параметров значений, передаваемых элементом управления с привязкой к данным.
DataObjectTypeName Если свойство задано и ObjectDataSource элемент управления связан с элементом управления с привязкой к данным, методы, заданные свойствами InsertMethod и DeleteMethod , должны иметь один параметр типа, указанный в свойстве DataObjectTypeName . Если свойству ConflictDetection присвоено OverwriteChanges значение , метод, заданный свойством UpdateMethod , должен иметь один параметр типа, указанный в свойстве DataObjectTypeName . Если свойству ConflictDetectionCompareAllValues присвоено значение , метод, заданный свойством UpdateMethod , должен иметь два параметра типа, указанного в свойстве DataObjectTypeName . Первый параметр содержит исходные значения; второй параметр содержит новые значения.
Свойство DataObjectTypeName делегирует свойству DataObjectTypeName объекта , ObjectDataSourceView связанному с элементом ObjectDataSource управления .