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

Значение свойства

String

Полное или сокращенное имя класса, обозначающее тип объекта, который может использоваться объектом ObjectDataSource в качестве параметра операции Insert(), Update() или Delete(). Значение по умолчанию — пустая строка ("").

Примеры

Раздел содержит два примера кода. В первом примере кода показано, как реализовать тип, объединяющий все значения параметров в один объект с помощью DataObjectTypeName свойства. Во втором примере кода показана веб-страница, использующая два класса, которые используются в первом примере кода.

В следующем примере кода показано, как реализовать тип, объединяющий все значения параметров в один объект с помощью DataObjectTypeName свойства. Метод AggregateData select класса возвращает DataTable объект с двумя столбцами с именами Name и Number. Аналогичным образом NewData класс определяет два свойства чтения и записи и Name Number. Метод Insert AggregateData класса принимает один параметр типа NewData. Для TypeName свойства задано AggregateData значение, а DataObjectTypeName для свойства задано значение NewDataObjectDataSource .

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>

Комментарии

Вместо указания нескольких параметров, передаваемых UpdateInsertв методы, Delete можно создать один объект, который объединяет несколько значений поля данных. Этот объект передается в методы вместо нескольких параметров.

Поведение элемента управления по умолчанию, привязанного ObjectDataSource к элементу управления с привязкой к данным, заключается в том, что элемент управления с привязкой к данным создает Parameter объект для каждого параметра в источнике данных. Если бизнес-объект содержит много полей, результирующий метод также содержит много полей. Свойство DataObjectTypeName позволяет указать тип, имеющий свойство для каждого поля данных. Затем вместо передачи нескольких параметров методу среда выполнения создает один объект и задает все его свойства. Этот объект добавляется в коллекцию параметров для вызова метода.

Тип, указанный свойством DataObjectTypeName , должен иметь конструктор без параметров, поэтому ObjectDataSource элемент управления может создать экземпляр типа. Тип также должен иметь настраиваемые свойства, позволяющие ObjectDataSource элементу управления заполнять объект значениями, передаваемыми из элемента управления с привязкой к данным. Имена свойств элемента ObjectDataSource управления должны точно соответствовать именам параметров значений, передаваемых элементом управления с привязкой к данным.

DataObjectTypeName Если свойство задано и ObjectDataSource элемент управления связан с элементом управления с привязкой к данным, методы, заданные свойствами DeleteMethod InsertMethod, должны иметь один параметр типа, указанного в свойствеDataObjectTypeName. ConflictDetection Если свойству OverwriteChanges присвоено значение, метод, указанный свойствомUpdateMethod, должен иметь один параметр типа, указанного в свойствеDataObjectTypeName. ConflictDetection Если свойству CompareAllValues присвоено значение, метод, указанный свойствомUpdateMethod, должен иметь два параметра типа, указанного в свойствеDataObjectTypeName. Первый параметр содержит исходные значения; Второй параметр содержит новые значения.

Свойство DataObjectTypeName делегирует DataObjectTypeName свойство ObjectDataSourceView , связанное с элементом ObjectDataSource управления.

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

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