Bagikan melalui


ObjectDataSource.DataObjectTypeName Properti

Definisi

Mendapatkan atau mengatur nama kelas yang ObjectDataSource digunakan kontrol untuk parameter dalam operasi pembaruan, sisipkan, atau hapus data, alih-alih meneruskan nilai individual dari kontrol terikat data.

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

Nilai Properti

Nama kelas yang sebagian atau sepenuhnya memenuhi syarat yang mengidentifikasi jenis objek yang ObjectDataSource dapat digunakan sebagai parameter untuk Insert(), , Update()atau Delete() operasi. Defaultnya adalah string kosong ("").

Contoh

Bagian ini berisi dua contoh kode. Contoh kode pertama menunjukkan cara mengimplementasikan jenis yang menggabungkan semua nilai parameter ke dalam satu objek, menggunakan DataObjectTypeName properti . Contoh kode kedua menunjukkan halaman Web yang menggunakan dua kelas yang digunakan dalam contoh kode pertama.

Contoh kode berikut menunjukkan cara mengimplementasikan jenis yang menggabungkan semua nilai parameter ke dalam satu objek, menggunakan DataObjectTypeName properti . Metode AggregateData pilih kelas mengembalikan DataTable objek dengan dua kolom bernama Name dan Number. Demikian pula, NewData kelas mendefinisikan dua properti baca/tulis, Name dan Number. Metode InsertAggregateData kelas mengambil satu parameter jenis NewData. TypeName Properti diatur ObjectDataSource ke AggregateData dan DataObjectTypeName properti diatur ke 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

Contoh kode berikut menunjukkan halaman Web yang menggunakan dua kelas yang digunakan dalam contoh kode sebelumnya.

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

Keterangan

Alih-alih menentukan beberapa parameter yang diteruskan ke Updatemetode , Insert, dan Delete , Anda dapat membuat satu objek yang menggabungkan beberapa nilai bidang data. Objek yang satu ini diteruskan ke metode , bukan beberapa parameter.

Perilaku ObjectDataSource default kontrol yang terikat ke kontrol terikat data adalah bahwa kontrol terikat data membuat Parameter objek untuk setiap parameter di sumber data. Jika objek bisnis memiliki banyak bidang, metode yang dihasilkan juga memiliki banyak bidang. Properti DataObjectTypeName memungkinkan Anda menentukan jenis yang memiliki properti untuk setiap bidang data. Kemudian, alih-alih meneruskan beberapa parameter ke metode , runtime membuat satu objek dan mengatur semua propertinya. Objek yang satu ini ditambahkan ke koleksi parameter untuk panggilan metode.

Jenis yang ditentukan oleh DataObjectTypeName properti harus memiliki konstruktor tanpa parameter yang tidak memiliki parameter, sehingga ObjectDataSource kontrol dapat membuat instans jenis . Jenis juga harus memiliki properti yang dapat diatur yang memungkinkan ObjectDataSource kontrol mengisi objek dengan nilai yang diteruskan dari kontrol terikat data. Nama properti pada ObjectDataSource kontrol diharapkan sama persis dengan nama parameter nilai yang diteruskan oleh kontrol terikat data.

DataObjectTypeName Ketika properti diatur dan ObjectDataSource kontrol dikaitkan dengan kontrol terikat data, metode yang ditentukan oleh InsertMethod properti dan DeleteMethod masing-masing harus memiliki satu parameter jenis yang ditentukan dalam DataObjectTypeName properti . ConflictDetection Jika properti diatur ke OverwriteChanges nilai , metode yang ditentukan oleh UpdateMethod properti harus memiliki satu parameter dari jenis yang ditentukan dalam DataObjectTypeName properti . ConflictDetection Jika properti diatur ke CompareAllValues nilai , metode yang ditentukan oleh UpdateMethod properti harus memiliki dua parameter jenis yang ditentukan dalam DataObjectTypeName properti . Parameter pertama berisi nilai asli; parameter kedua berisi nilai baru.

Properti DataObjectTypeName mendelegasikan ke DataObjectTypeName properti yang ObjectDataSourceView terkait dengan ObjectDataSource kontrol.

Berlaku untuk

Lihat juga