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. Метод InsertAggregateData класса принимает один параметр типа NewData. Свойству TypeNameObjectDataSource присваивается значение , 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 управления .

Применяется к

См. также раздел