Прочитать на английском

Поделиться через


ObjectDataSource.DataObjectTypeName Свойство

Определение

Возвращает или задает имя класса, используемое элементом управления ObjectDataSource в качестве параметра в операции обновления, вставки или удаления данных вместо передачи отдельных значений из элемента управления с привязкой к данным.

public string DataObjectTypeName { get; set; }

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

Полное или сокращенное имя класса, обозначающее тип объекта, который может использоваться объектом 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; }
        }
    }
}

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

<%@ 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>

Комментарии

Вместо указания нескольких параметров, передаваемых 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 управления .

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

Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

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