ASP.NET中 ObjectDataSource控件的DataObjectTypeName屬性
來源:易賢網 閱讀:939 次 日期:2016-08-09 15:09:47
溫馨提示:易賢網小編為您整理了“ASP.NET中 ObjectDataSource控件的DataObjectTypeName屬性”,方便廣大網友查閱!

一、ObjectDataSource 控件說明

獲取或設置某個類的名稱,ObjectDataSource 控件將該類用于更新、插入或刪除數據操作中的參數,而不是從數據綁定控件傳遞個別的值。

您不用指定傳遞給 Update、Insert 和 Delete 方法的多個參數,而是可以創建一個累計多個數據字段值的對象。僅給方法傳遞這一個對象,而不是多個參數。

綁定到數據綁定控件的 ObjectDataSource 控件的默認行為是,數據綁定控件為數據源中的每個參數創建一個 Parameter 對象。如果業務對象有很多字段,則結果方法也有很多字段。DataObjectTypeName 屬性允許您為每個數據字段都指定一個具有屬性的類型。這樣,運行時不是給方法傳遞多個參數,而是創建一個對象并設置它的所有屬性。這一個對象添加到方法調用的參數集合中。

二、DataObjectTypeName 屬性的使用

DataObjectTypeName 屬性指定的類型必須有一個不帶參數的默認構造函數,以便 ObjectDataSource 控件可以創建此類型的實例。此類型還必須具有可設置的屬性,允許 ObjectDataSource 控件用數據綁定控件傳遞的值填充對象。ObjectDataSource 控件的屬性名應該與數據綁定控件傳遞的值的參數名完全匹配。

當設置了 DataObjectTypeName 屬性并且 ObjectDataSource 控件與數據綁定控件關聯時,由 InsertMethod 和 DeleteMethod 屬性指定的方法必須各有一個在 DataObjectTypeName 屬性中指定的類型的參數。如果 ConflictDetection 屬性設置為 OverwriteChanges 值,則由 UpdateMethod 屬性指定的方法必須有一個在 DataObjectTypeName 屬性中指定的類型的參數。如果 ConflictDetection 屬性設置為 CompareAllValues 值,則由 UpdateMethod 屬性指定的方法必須有兩個在 DataObjectTypeName 屬性中指定的類型的參數。第一個參數包含原始值;第二個參數包含新值。

DataObjectTypeName 屬性委托給與 ObjectDataSource 控件關聯的 ObjectDataSourceView 的 DataObjectTypeName 屬性。

三、示例代碼

下面的代碼示例演示如何使用 DataObjectTypeName 屬性,實現一個將所有參數值合并為一個對象的類型。AggregateData 類的選擇方法返回一個有兩個名為 Name 和 Number 的列的 DataTable 對象。同樣,NewData 類定義兩個讀/寫屬性 Name 和 Number。AggregateData 類的 Insert 方法帶 NewData 類型的一個參數。ObjectDataSource 的 TypeName 屬性設置為 AggregateData,DataObjectTypeName 屬性設置為 NewData。

前臺代碼:

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

后臺代碼:

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; }

    }

  }

}

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看