共用方式為


逐步解說:資料繫結至自訂的商務物件

更新:2007 年 11 月

許多 Web 應用程式都使用多層進行建置,其中,中介層 (Middle Tier) 中的一或多個元件用來提供資料存取。Microsoft Visual Web Developer 包含可協助您建立資料元件的精靈,您可以將建立的資料元件用做中介層資料物件,如逐步解說:具有 Visual Studio 資料元件的資料繫結 Web 網頁中所述。

不過,您可能還想要建置自訂商務物件 (Business Object),而不是依賴於由精靈建立的資料元件。建立自訂商務物件可讓您實作自己的商務邏輯。此逐步解說說明如何建立可用做 ASP.NET Web 網頁之資料來源的基本商務物件。

在瀏覽這份逐步解說期間,您將瞭解如何:

  • 建立可將資料傳回至網頁的元件。該元件將 XML 檔案用於其資料。

  • 參考商務物件做為 Web 網頁的資料來源。

  • 將控制項繫結至由商務物件傳回的資料。

  • 使用商務物件讀取和寫入資料。

必要條件

若要完成這個逐步解說,您必須要有:

  • Visual Web Developer (Visual Studio)。

  • .NET Framework。

此逐步解說假設您已對如何使用 Visual Web Developer 具有一般瞭解。

建立網站

如果您已經在 Visual Web Developer 中建立了網站 (例如,藉由遵循逐步解說:在 Visual Web Developer 中建立基本 Web 網頁中的步驟),就可以使用該網站,並繼續進行下一節的步驟「建立商務資料的 XML 檔案」。否則,依照下列這些步驟建立新的網站和 Web 網頁。

若要建立檔案系統網站

  1. 開啟 Visual Web Developer。

  2. 在 [檔案] 功能表上,按一下 [新網站]。

    [新網站] 對話方塊隨即出現。

  3. 在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET 網站]。

  4. 在 [位置] 方塊中,輸入您想要用來保存網站頁面的資料夾名稱。

    例如,輸入資料夾名稱 C:\WebSites。

  5. 在 [語言] 清單中,請按一下您想要操作的程式語言。

  6. 按一下 [確定]。

    Visual Web Developer 會建立資料夾和命名為 Default.aspx 的新頁面。

建立商務資料的 XML 檔案

在下列程序中,您將建立商務元件資料的簡單 XML 檔案。

若要建立 XML 檔

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 [App_Data],然後按一下 [加入新項目]。

    注意事項:

    確定您在 [App_Data] 資料夾中建立 XML 檔案。[App_Data] 資料夾在上面設定了允許 Web 網頁讀取和寫入資料至 XML 檔案的權限。

  2. 請在 [Visual Studio 安裝的範本] 底下,按一下 [XML 檔案]。

  3. 在 [名稱] 方塊中,輸入 Authors.xml。

  4. 按一下 [加入]。

    會建立新的 XML 檔案,其中只包含 XML 指示詞。

  5. 複製下列 XML 資料,然後將這些資料貼到檔案中,覆寫檔案中原有的內容。

    XML 檔案包含識別資料之資料庫結構的結構描述資訊,包括索引鍵的主索引鍵約束條件。

    注意事項:

    商務元件能以您的應用程式所適合的任何方式使用資料。此逐步解說會使用 XML 檔案。

    <?xml version="1.0" standalone="yes"?>
    <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd">
    <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
        <xs:element name="dsPubs" msdata:IsDataSet="true">
          <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="authors">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="au_id" type="xs:string" />
                    <xs:element name="au_lname" type="xs:string" />
                    <xs:element name="au_fname" type="xs:string" />
                    <xs:element name="au_phone" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
          <xs:unique name="Constraint1" msdata:PrimaryKey="true">
            <xs:selector xpath=".//mstns:authors" />
            <xs:field xpath="mstns:au_id" />
          </xs:unique>
        </xs:element>
      </xs:schema>
      <authors>
        <au_id>172-32-1176</au_id>
        <au_lname>West</au_lname>
        <au_fname>Paul</au_fname>
        <au_phone>408 555-0123</au_phone>
      </authors>
      <authors>
        <au_id>213-46-8915</au_id>
        <au_lname>Gray</au_lname>
        <au_fname>Chris</au_fname>
        <au_phone>415 555-0120</au_phone>
      </authors>
    </dsPubs>
    
  6. 儲存 Authors.xml 檔案,然後將其關閉。

建立元件

下一步是建立要充當商務元件的類別。您將在網站的 [App_Code] 資料夾中保存元件。在實際應用程式中,您可以將元件保留在任何方便的存放區,包括全域組件 (Assembly) 快取。如果您的網站還沒有名為 [App_Code] 的目錄,則必須建立一個。

若要建立 App_Code 資料夾

  • 在 [方案總管] 中,以滑鼠右鍵按一下網站名稱,然後按一下 [加入 ASP.NET 資料夾],再按 [App_Code]。

    注意事項:

    資料夾必須命名為 [App_Code]。

您現在可以將元件加入至網站。

若要建立商務元件

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 [App_Code] 資料夾,然後按一下 [加入新項目]。

    注意事項:

    確定您在 [App_Code] 資料夾中建立新項目。

    [加入新項目] 對話方塊隨即出現。

  2. 請在 [Visual Studio 安裝的範本] 底下,按一下 [類別]。

  3. 在 [語言] 方塊中,請按一下您想要使用的程式語言。

  4. 在 [名稱] 方塊中,輸入 BusinessObject。

  5. 按一下 [加入]。

    Visual Web Developer 會建立新的類別檔案並開啟程式碼編輯器。

  6. 複製下列程式碼,然後將其貼入檔案,以覆寫檔案中原有的程式碼。

    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Web
    Imports System.Data
    Namespace PubsClasses
        Public Class AuthorClass
            Private dsAuthors As DataSet = _
                New System.Data.DataSet("ds1")
            Private filePath As String = _
               HttpContext.Current.Server.MapPath _
                   ("~/App_Data/authors.xml")
            Public Sub New()
                dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema)
            End Sub
    
            Public Function GetAuthors() As DataSet
                Return dsAuthors
                End Function
            End Class
    End Namespace
    
    using System;
    using System.Web;
    using System.Data;
    namespace PubsClasses
    {
        public class AuthorClass
        {
            private DataSet dsAuthors = new DataSet("ds1");
            private String filePath =
                HttpContext.Current.Server.MapPath
                    ("~/App_Data/Authors.xml");
            public AuthorClass()
            {
                dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema);
            }
            public DataSet GetAuthors ()
            {
                return dsAuthors;
            }
        }
    }
    
    注意事項:

    確定 filePath 變數的值會參考先前所建立的 XML 檔案名稱。

    當建立類別的執行個體時,它會讀取 XML 檔案並將其轉譯成資料集。類別的 GetAuthors 方法會傳回該資料集。

  7. 儲存檔案。您必須儲存檔案,才能在下一章節中正常使用。

使用商務元件顯示資料

您現在可以叫用 (Invoke) Web 網頁中的商務元件並顯示其資料。若要參考此元件,請使用 ObjectDataSource 控制項,該控制項專為使用物件所設計。

若要建立參考元件的 ObjectDataSource 控制項

  1. 切換至 [Default.aspx] 頁面或開啟它。

    注意事項:

    如果您沒有 Default.aspx 頁面,則可以使用其他頁面。或者,您可以將新頁面加入至網站。在 [方案總管] 中,以滑鼠右鍵按一下網站名稱,再按 [加入新項目],然後加入 [Web Form]。

  2. 切換至 [設計] 檢視。

  3. 在 [工具箱] 的 [資料] 資料夾中,將 [ObjectDataSource] 控制項拖曳至頁面。

  4. 在 [屬性] 視窗中,將 [ID] 設定為 AuthorsObjectDataSource。

  5. 以滑鼠右鍵按一下 [ObjectDataSource] 控制項,然後按一下智慧標籤以顯示 [ObjectDataSource 工作] 功能表。

  6. 在 [ObjectDataSource 工作] 功能表上,按一下 [設定資料來源]。

    [設定資料來源] 精靈便會出現。

  7. [選擇您的商務物件] 清單,按一下 [PubsClasses.AuthorClass]。

  8. 按一下 [下一步]。

  9. 在 [選取] 索引標籤中,於 [選擇方法] 清單中,按一下 [GetAuthors(),傳回資料集]。

    [GetAuthors] 方法定義於您先前建立的商務類別中。它會傳回包含來自 Authors.xml 檔案之資料的資料集。

  10. 按一下 [完成]。

    您已輸入的組態資訊會指定應呼叫元件的 GetAuthors 方法才能從元件取得資料。

    注意事項:

    您針對 SelectMethod 屬性所指定的方法名稱是區分大小寫的,即使是以 Visual Basic .NET 進行程式設計。

您現在可以使用 ObjectDataSource 控制項從元件中取得資料。您將在頁面上的 GridView 控制項中顯示資料。

若要顯示來自元件的資料。

  1. 從 [工具箱] 的 [資料] 資料夾中,將 [GridView] 控制項拖曳至頁面。

  2. 以滑鼠右鍵按一下 [GridView] 控制項,然後按一下智慧標籤,如果 [一般 GridView 工作] 功能表未顯示的話。

  3. 在 [一般 GridView 工作] 功能表上的 [選擇資料來源] 方塊中,按一下 [AuthorsObjectDataSource]。

  4. 按 CTRL+F5 執行頁面。

    [GridView] 控制項,其中會顯示 XML 資料。

使用商務元件插入資料

對於其他資料來源控制項 (例如 SqlDataSource 控制項) ObjectDataSource 控制項會支援更新 (插入、更新和刪除)。在本章節中,您將使用插入作者記錄的方法修改商務元件。然後,您將變更頁面,以便使用者可輸入新的作者資訊並修改 ObjectDataSource 控制項,以執行插入。

注意事項:

在這部分的逐步解說中,將更新您先前建立的 Authors.xml 檔案。當嘗試更新檔案時,應用程式具有在執行階段寫入檔案的權限或網頁將顯示錯誤,這是很重要的。如果您在 [App_Data] 資料夾中建立了 Authors.xml 檔案,則會自動設定權限。

若要修改商務元件以允許插入

  1. 切換至 BusinessObject 檔案。

  2. 以 AuthorClass 之最終成員的身分加入下列方法。

    Public Sub InsertAuthor(ByVal au_id As String, _
            ByVal au_lname As String, _
            ByVal au_fname As String, ByVal au_phone As String)
        Dim workRow As DataRow = dsAuthors.Tables(0).NewRow
        workRow.BeginEdit()
        workRow(0) = au_id
        workRow(1) = au_lname
        workRow(2) = au_fname
        workRow(3) = au_phone
        workRow.EndEdit()
        dsAuthors.Tables(0).Rows.Add(workRow)
        dsAuthors.WriteXml(filePath, Data.XmlWriteMode.WriteSchema)
    End Sub
    
    public void InsertAuthor (String au_id, String au_lname, 
        String au_fname, String au_phone)
    {
        DataRow workRow = dsAuthors.Tables[0].NewRow ();
        workRow.BeginEdit ();
        workRow[0] = au_id;
        workRow[1] = au_lname;
        workRow[2] = au_fname;
        workRow[3] = au_phone;
        workRow.EndEdit ();
        dsAuthors.Tables[0].Rows.Add (workRow);
        dsAuthors.WriteXml (filePath, XmlWriteMode.WriteSchema);
    }
    
    注意事項:

    請密切留意用於將作者資訊傳送至方法 (au_id、au_lname、au_fname 和 au_phone) 之變數的名稱。這些名稱必須符合在先前建立的 XML 檔案之結構描述中定義的資料行名稱。

    您需要四個值 (必須在頁面中以參數的形式提供),才能插入新的方法。該方法會在資料集中建立新的資料列,然後將更新的資料集寫出為 XML 檔案。

  3. 儲存檔案。

下一步是變更頁面,以便使用者可以輸入新的作者資訊。對於下列程序,您將使用 DetailsView 控制項。

若要加入用於插入資料的控制項

  1. 切換至 Default.aspx 頁面或開啟它。

  2. 切換至 [設計] 檢視。

  3. 從 [工具箱] 的 [資料] 資料夾中,將 [DetailsView] 控制項拖曳至頁面。

    注意事項:

    頁面的精確配置並不重要。

  4. 在 [DetailsView 工作] 功能表的 [選擇資料來源] 方塊中,按一下 [AuthorsObjectDataSource]。

    注意事項:

    如果 [DetailsView 工作] 功能表不可見,請按一下智慧標籤。

  5. 在 [屬性] 視窗中,將 [AutoGenerateInsertButton] 設定為 true。

    這會使 [DetailsView] 控制項呈現 [新增] 按鈕,使用者按一下該按鈕可以將控制項置於資料輸入模式。

最後,您必須設定 ObjectDataSource 控制項,以指定控制項在插入資料時應採取的動作。

若要設定用於插入資料的資料來源控制項

  • 以滑鼠右鍵按一下 [AuthorsObjectDataSource],然後按一下 [屬性],然後將 [InsertMethod] 設定為 InsertAuthor。

    此為您加入至商務元件之方法的名稱。

您現在可以將新的作者插入 XML 檔案。

若要測試插入

  1. 按 CTRL+F5 執行 Default.aspx 頁面。

  2. 在 [DetailsView] 控制項中,按一下 [新增] 按鈕。

    控制項會以文字方塊重新顯示。

  3. 輸入新的作者資訊,然後按一下 [插入]。

    新的作者資訊會加入至 XML 檔案。[GridView] 控制項會立即反映新記錄。

後續步驟

在本逐步解說中,說明了如何使用資料元件。您可能會想要實驗其他的巡覽功能。例如,您可能要:

請參閱

工作

逐步解說:具有 Visual Studio 資料元件的資料繫結 Web 網頁

逐步解說:在 Visual Web Developer 中使用網站中的共用程式碼

逐步解說:在 Visual Web Developer 中建立基本 Web 網頁

概念

資料來源控制項概觀

使用含有資料來源控制項的參數