共用方式為


逐步解說:使用 LinqDataSource 和 DetailsView 控制項擷取、更新、插入和刪除資料

更新:2007 年 11 月

在此逐步解說中,您將建立一個簡單的資料庫資料表和一個使用 LinqDataSource 控制項的 Web 網頁。這個 Web 網頁可讓使用者從資料庫資料表擷取、更新、插入和刪除資料。您將使用 DetailsView 控制項顯示資料。LinqDataSource 控制項可讓您執行所有這些作業,而不需要撰寫 Select、Update、Insert 或 Delete 陳述式。

您將會使用物件關聯式設計工具建立類別,這個類別代表包含值的資料庫資料表。LinqDataSource 控制項會與這個產生的類別互動,以擷取、更新、插入和刪除資料。

必要條件

若要在自己的開發環境中實作這些程序,您需要:

  • Visual Studio 2008 orVisual Web Developer Express 版

  • 您電腦上安裝的 SQL Server Express Edition。如果已經安裝 SQL Server,則只需稍微調整某些程序,您就可以改用 SQL Server。

  • ASP.NET 網站。

建立資料庫資料表

若要執行這個逐步解說的步驟,您必須有資料庫資料表。如果您沒有資枓表,可以使用下列程序建立。如果使用現有的資料表,則有些程序的步驟不會完全符合您的資料庫。不過,逐步解說中所描述的概念都一樣。

建立資料庫資料表

  1. 如果網站沒有 App_Data 資枓夾,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [加入 ASP.NET 資料夾],再按一下 [App_Data]。

  2. 以滑鼠右鍵按一下 [App_Data] 資料夾,然後按一下 [加入新項目]。

  3. 選取 [已安裝的範本] 下的 [SQL 資料庫],將檔案名稱變更為 Reviews.mdf,然後按一下 [加入]。

    加入名為 Reviews.mdf 的 SQL 資料庫項目

  4. 在 [伺服器總管] 中,開啟 [Reviews.mdf] 節點,然後以滑鼠右鍵按一下 [資料表] 資料夾。

  5. 按一下 [加入新的資料表]。

  6. 在資料表建立下列資料行:

    資料行名稱

    資料型別

    屬性

    MovieID

    int

    IsIdentity = Yes

    Not null

    Primary Key

    Title

    nvarchar(50)

    Theater

    nvarchar(50)

    Review

    nvarchar(1000)

    Score

    int

    Not null

    建立資料庫資料表

  7. 儲存資料表並命名為 MovieReviews。

  8. 使用資料範例將多筆資料錄加入至 MovieReviews 資料表。

    在[伺服器總管] 中,以滑鼠右鍵按一下 [MovieReviews] 資料表,然後按一下 [顯示資料表資料]。您不需要指定 MovieID 的值,因為資料庫會產生這個值。

建立類別以代表資料庫實體

使用 LinqDataSource 控制項,請使用代表資料庫實體 (Entity) 的類別。您可以使用 Visual Studio 2008 或 Visual Web Developer Express 版中的工具建立這些類別。

建立 MovieReviews 資料表的類別

  1. 如果網站沒有 App_Code 資枓夾,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [加入 ASP.NET 資料夾],再按一下 [App_Code]。

  2. 以滑鼠右鍵按一下 [App_Code] 資料夾,然後按一下 [加入新項目]。

  3. 選取 [已安裝的範本] 下的 [ Linq to SQL 類別] 範本,將檔案重新命名為 Reviews.dbml,然後按一下 [加入]。

    加入名為 Reviews.dbml 的 LINQ to SQL 項目

    [物件關聯式設計工具] 隨即出現。

  4. 在 [伺服器總管] 中,將 [MovieReviews] 資料表拖曳至 [物件關聯式設計工具] 視窗中。

    在設計工具視窗中,MovieReviews 資料表和其資料行會以名為 MovieReview 的實體表示。

    在物件關聯式設計工具中檢視新資料表

  5. 儲存 Reviews.dbml 檔案。

  6. 在 [方案總管] 中,開啟 Reviews.designer.cs 或 Reviews.designer.vb 檔案。

    請注意檔案中現在有 ReviewsDataContext 和 MovieReview 的類別。ReviewsDataContext 類別代表資料庫,而 MovieReview 類別代表資料庫資料表。ReviewsDataContext 類別的無參數建構函式 (Constructor) 會從 Web.config 檔中讀取連接字串 (Connection String)。

  7. 開啟 Web.config 檔。

    請注意,connectionStrings 項目中已加入連接字串。

  8. 關閉類別檔案和 Web.config 檔案。

建立和設定 LinqDataSource 控制項

現在您已有資料庫資料表和代表資料庫實體的類別,可以在 ASP.NET Web 網頁使用 LinqDataSource 控制項來管理資料。

建立和設定 LinqDataSource 控制項

  1. 在 Visual Studio 中建立新的 ASP.NET Web 網頁並切換至 [設計] 檢視。

  2. 從 [工具箱] 的 [資料] 索引標籤中,將 LinqDataSource 控制項拖放至 Web 網頁的 form 項目內。

    您可以將 ID 屬性保留為 LinqDataSource1。

    將 LinqDataSource 控制項加入至設計視窗

  3. ContextTypeName 屬性設定為 ReviewsDataContext。

  4. TableName 屬性設定為 MovieReviews。

  5. AutoPage 設定為 true 並切換至 [原始碼] 檢視。

    下列範例將顯示 LinqDataSource 控制項的宣告式標記。

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    

    請注意,您不需要指定任何選取資料的資料庫命令。

加入控制項以顯示資料

您現在可以加入 DetailsView 控制項,並將它繫結至 LinqDataSource 控制項。DetailsView 控制項可讓使用者檢視 LinqDataSource 控制項所管理的資料。

將資料從 LinqDataSource 連接至 DetailsView

  1. 在 [工具箱] 的 [資料] 索引標籤中,按兩下 DetailsView 控制項以加入至頁面。

    您可以將 ID 屬性保留為 DetailsView1。

  2. DataSourceID 屬性設定為 LinqDataSource1。

  3. DataKeyNames 屬性設定為 MovieID。

  4. AllowPaging 設為 true。

    下列範例將顯示 DetailsView 控制項的宣告式標記。

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      ID="DetailsView1" 
      >
    </asp:DetailsView>
    
  5. 儲存變更,然後按 CTRL+F5 在瀏覽器中檢視頁面。

    DetailsView 控制項會顯示 MovieReviews 資料表中目前資料錄的值。DetailsView 控制項會自動建立 Web 控制項,以顯示資料庫資料表的每一個資料行。

讓使用者更新、插入和刪除資料

LinqDataSource 控制項可以建立更新、插入和刪除資料的命令。

啟用更新、插入和刪除作業

  1. LinqDataSource 控制項中,將 EnableUpdateEnableInsertEnableDelete 屬性設定為 true。

    下列範例將顯示 LinqDataSource 控制項的宣告式標記。

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    
  2. DetailsView 控制項中,將 AutoGenerateEditButtonAutoGenerateInsertButtonAutoGenerateDeleteButton 屬性設定為 true。

  3. 若要限制 DetailsView 控制項中顯示的欄位和設定欄位的順序,請將 AutoGenerateRows 屬性設定為 false。

  4. 加入 Title、Theater、Rating 和 Review 資料行的欄位,並將這些欄位繫結至對應的資料欄位。

    下列範例將顯示 DetailsView 控制項的宣告式標記。

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AutoGenerateEditButton="true"
      AutoGenerateInsertButton="true"
      AutoGenerateDeleteButton="true"
      AllowPaging="true" 
      ID="DetailsView1" 
      >
      <Fields>
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Theater" DataField="Theater" />
        <asp:BoundField HeaderText="Number of Stars" DataField="Score" />
        <asp:BoundField HeaderText="Review" DataField="Review" />
      </Fields>
    </asp:DetailsView>
    

    已從資料來源中選取 MovieID 資料行和其他資料行。但是,這個資料行不會顯示在 DetailsView 控制項中,使用者也無法修改它的值。您必須選取 MovieID 屬性,LinqDataSource 控制項才會自動建立更新、插入和刪除資料的命令。

    請注意,您不需要指定這些資料作業的命令。

  5. 儲存變更,然後按 CTRL+F5 在瀏覽器中檢視頁面。

    DetailsView 控制項會顯示 MovieReviews 資料表中目前資料錄的欄位。您可以按一下 DetailsView 控制項上對應的按鈕,以更新、插入和刪除資料錄。

後續步驟

此逐步解說已示範使用 LinqDataSource 控制項來更新、插入和刪除資料錄的基本功能。若要了解 LinqDataSource 控制項的其他功能,您可以執行下列動作:

請參閱

概念

LinqDataSource Web 伺服器控制項概觀