逐步解說:在 Visual Studio 中建立主從式 Web 網頁

更新:2007 年 11 月

許多 Web 網頁可以用多種方法顯示資料,顯示的通常是來自關聯資料表的資料。此逐步解說示範在多個控制項和表格中使用資料的各種方法,包括具有主版/詳細資料關係的資料。逐步解說將說明的工作包括:

  • 將資料庫資料填入 (Populate) 下拉式清單。

  • 建立篩選條件,即包含 WHERE 子句的 SQL 陳述式 (參數型查詢)。

  • 根據使用者在下拉式清單中的選取顯示篩選的資料。

  • 使用 DetailsView 控制項顯示選取之資料錄的詳細資料。

  • 在一個頁面中選取資料錄,並在第二個頁面中顯示關聯資料錄。

必要條件

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

  • 存取 SQL Server Northwind 資料庫。如需下載並安裝 SQL Server 範例 Northwind 資料庫的詳細資訊,請參閱 Microsoft SQL Server 網站上的安裝範例資料庫

    注意事項:

    如果您需要如何登入執行 SQL Server 之電腦的相關資訊,請聯繫伺服器管理員。

  • Microsoft Data Access Components (MDAC) 2.7 (含) 以後版本。

    如果使用的是 Microsoft Windows XP 或 Windows Server 2003,就表示已經有 MDAC 2.7。不過,如果您使用的是 Microsoft Windows 2000,可能需要升級電腦中所安裝的 MDAC。如需詳細資訊,請參閱 MSDN Library 中的文件<Microsoft Data Access Components (MDAC) Installation>。

建立網站

如果您已經在 Microsoft Visual Web Developer 中建立了網站 (例如,藉由遵循逐步解說:在 Visual Web Developer 中建立基本 Web 網頁逐步解說:Web 網頁中的基本資料存取中的步驟) ,可以使用該網站,並直接進行下一節「連接至 SQL Server」的步驟。否則,依照下列這些步驟建立新的網站和 Web 網頁。

若要建立檔案系統網站

  1. 開啟 Visual Web Developer。

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

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

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

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

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

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

  6. 按一下 [確定]。

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

連接到 SQL Server

若要使用資料,您需要建立到資料庫的連接。在此逐步解說中,您將不使用 Web 網頁或控制項建立連接。

若要建立對 SQL Server 的連接

  1. 按 CTRL+ALT+S 顯示 [資料庫總管]。在 [資料庫總管] 中,以滑鼠右鍵按一下 [資料連接],並選擇 [加入連接]。

    [變更資料來源] 對話方塊隨即顯示。

  2. 在 [變更資料來源] 對話方塊中,選取 [Microsoft SQL Server],然後按一下 [確定]。

  3. 在 [加入連接] 對話方塊中,執行下列事項:

    • 輸入或選取 SQL Server 電腦的名稱。為您電腦上的伺服器輸入 (本機)。

    • 選取 [使用 SQL Server 驗證]。

    • 輸入使用者名稱和密碼。

    • 選取 [儲存我的密碼]。

    • 選取 [Northwind] 做為資料庫。

  4. 按一下 [測試連接],然後在您確定它有正常運作時,按一下 [確定]。

    將連接加入至 [伺服器總管]。

使用下拉式清單做為主版

在這部分的逐步解說中,您要將下拉式清單加入至頁面,並在其中填入來自 [Northwind] 資料表的分類清單。當使用者選取分類時,頁面將顯示該分類的產品。

若要建立並填入下拉式清單

  1. 切換至 Default.aspx 頁面或開啟它。如果您使用的是已建立的網站,請加入或開啟此逐步解說中可以使用的頁面。

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

  3. 在頁面中輸入依分類選取產品,並使用 [工具箱] 上的 [區塊格式] 下拉式清單將文字格式化為標題。

  4. 從 [工具箱] 的 [標準] 群組中,將 [DropDownList] 控制項拖曳至頁面。

  5. 在 [DropDownList 工作] 中選取 [啟用 AutoPostBack] 核取方塊。

    這會設定控制項,以便在清單中作了選取後讓頁面立即回傳至伺服器,而不是等到使用者按一下按鈕時才回傳。

  6. 在 [DropDownList 工作] 中選取 [選擇資料來源]。

    [選擇資料來源] 精靈隨即啟動。

  7. 在 [選取資料來源] 清單中,按一下 [<新增資料來源>]。

    [資料來源組態精靈] 對話方塊隨即顯示。

  8. 選取 [資料庫]。

    這樣會指定您要從支援 SQL 陳述式的資料庫中取得資料 (包含 SQL Server 和其他 OLE-DB 相容資料庫)。

    在 [指定資料來源的 ID] 方塊中,會顯示預設的資料來源控制項名稱 (SqlDataSource1)。您可以保留這個名稱。

  9. 按一下 [確定]。

    此精靈會顯示可以在其中選取資料連接的 [設定資料來源 - SqlDataSource1] 頁面。

  10. 從下拉式清單中,選取先前在逐步解說中建立的 [Northwind] 連接。

  11. 按 [下一步]。

    此精靈會顯示頁面,您可以在其中選擇將連接字串儲存在組態檔中。

  12. 確認選取了 [是,將這個連接儲存為] 核取方塊,然後按一下 [下一步] (您可以保留預設的連接字串名稱)。

    此精靈會顯示一個頁面,您可以在其中指定要從資料庫擷取哪些資料。

  13. 從 [資料表或檢視選項] 下的 [名稱] 清單中,選取 [分類]。

  14. 在 [資料行] 方塊中,選取 [CategoryID] 和 [CategoryName]。

  15. 按 [下一步]。

  16. 按一下 [測試查詢],確定您正在取得所要的資料。

  17. 按一下 [完成]。

    [資料來源組態精靈] 隨即顯示,同時還顯示您所設定之資料來源控制項的名稱。

  18. 在 [選取要顯示在 DropDownList 中的資料欄位] 清單中,選取 [CategoryName]。

    注意事項:

    如果清單中沒有出現項目,請按一下 [重新整理結構描述] 連結。

    這樣做會指定 [CategoryName] 欄位的值將顯示為下拉式清單中項目的文字。

  19. 在 [選取 DropDownList 值的資料欄位] 清單中,按一下 [CategoryID]。

    這樣做會指定當選取項目時 [CategoryID] 欄位將做為該項目的值傳回。

  20. 按一下 [確定]。

繼續之前,請測試下拉式清單。

若要測試下拉式清單

  1. 按 CTRL+F5 執行頁面。

  2. 當頁面顯示時,請檢查下拉式清單。

  3. 選取分類,確定清單執行回傳。

    您現在可以顯示下拉式清單中選取之分類的產品。

使用方格顯示詳細資訊

您現在可以擴充頁面以包含方格。當使用者從分類下拉式清單選取分類時,方格將顯示該分類的產品。

若要使用方格顯示詳細資訊

  1. 切換至或開啟 Default.aspx 頁面 (或正在使用的頁面),然後切換至 [設計] 檢視。

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

  3. 在 [GridView 工作] 功能表的 [選擇資料來源] 清單中,選取 [<新增資料來源>]。

    [資料來源組態精靈] 隨即開啟。

  4. 選取 [資料庫]。

    在 [指定資料來源的 ID] 方塊中,會顯示預設的資料來源控制項名稱 (SqlDataSource2)。您可以保留這個名稱。

  5. 按一下 [確定]。

    此精靈會顯示可以選取連接的頁面。

  6. 從連接下拉式清單中,選取先前在逐步解說中建立並儲存的連接 (NorthwindConnectionString)。

  7. 按一下 [下一步]。

    此精靈會顯示可以在其中建立 SQL 陳述式的 [設定資料來源 - SqlDataSource2] 頁面。

  8. 從 [名稱] 清單中,選取 [產品]。

  9. 在 [資料行] 方塊中,選取 [ProductID]、[ProductName] 和 [CategoryID]。

  10. 按一下 [WHERE]。

    接著會顯示 [加入 WHERE 子句] 對話方塊。

  11. 從 [資料行] 清單中,選取 [CategoryID]。

  12. 從 [運算子] 清單中,選取 [=]。

  13. 從 [來源] 清單中,選取 [控制項]。

  14. 在 [參數屬性] 下的 [控制項 ID] 清單中,選取 [DropDownList1]。

    最後兩個步驟指定,查詢將從之前加入的 DropDownList 控制項中取得分類 ID 的搜尋值。

  15. 按一下 [加入]。

  16. 按一下 [確定],關閉 [加入 WHERE 子句] 對話方塊。

  17. 按 [下一步]。

  18. 在 [預覽] 頁面上,按一下 [測試查詢]。

    此精靈會顯示一個對話方塊,以提示您輸入要在 WHERE 子句中使用的值。

  19. 在方塊中輸入 4,然後按一下 [確定]。

    分類 4 的產品資料錄隨即顯示。

  20. 按一下 [完成] 關閉精靈。

您現在可以測試主版/詳細資料顯示。

若要測試網頁

  1. 按 CTRL+F5 執行頁面。

    當頁面出現時,會顯示下拉式清單中第一個項目的產品。

  2. 從清單中選取分類,並確認對應的產品出現在方格內。

在同一頁面上顯示主版/詳細資料

在這部分的逐步解說中,您可以在一個頁面中顯示來自關聯資料表的資料。主版資料表資料會顯示在方格中,使用者可從其中選取個別資料列。這樣做時,一或多個詳細資料資料錄會顯示於頁面其他位置的可捲動控制項中。為了說明,您將使用「Northwind 分類」資料表做為主版資料表,使用「產品」資料表做為詳細資料表。

若要顯示主版資料錄

  1. 將新頁面加入至網站,並將其命名為 MasterDetails2.aspx。

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

  3. 在頁面中輸入主版/詳細資料頁面,並將文字格式化為標題。

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

  5. 在 [GridView 工作] 功能表的 [選擇資料來源清單] 清單中,按一下 [<新增資料來源>],然後使用這些步驟為 [GridView] 控制項設定資料來源:

    1. 選取 [資料庫]。

    2. 按一下 [確定]。

    3. 從連接下拉式清單中,選取先前在逐步解說中建立並儲存的連接 (NorthwindConnectionString)。

    4. 按一下 [下一步]。

    5. 從 [名稱] 清單中,選取 [分類]。

    6. 在 [資料行] 方塊中,選取 [CategoryID] 和 [CategoryName]。

    7. 按一下 [下一步],再按一下 [完成]。

  6. 選取 [GridView] 控制項,然後在 [GridView 工作] 功能表中,選取 [編輯資料行]。

    [欄位] 對話方塊隨即出現。

  7. 在 [可用的欄位] 下,開啟 [命令欄位] 節點,選擇 [選取],然後按一下 [加入] 將其加入至 [選取的欄位] 清單。

  8. 在 [選取的欄位] 清單中,選擇 [選取],然後在 [CommandField] 屬性方格中將其 [SelectText] 屬性設定為 [詳細資料]。

  9. 按一下 [確定],關閉 [欄位] 對話方塊。

    包含 [詳細資料] 超連結的新資料行隨即加入至方格。

  10. 選取 [GridView] 控制項,並確定在 [屬性] 視窗中其 [DataKeyNames] 屬性設定為 CategoryID。

    這樣會指定當您在方格中選取資料列時,ASP.NET 可以找到目前顯示於已知位置之「分類」資料錄的索引鍵。

方格允許您選取個別分類。下一步要加入 DetailsView 控制項,它將顯示與選取之分類相關聯產品的詳細資料資料錄。DetailsView 控制項將使用不同的 SQL 查詢取得其資料,因此它需要第二個資料來源控制項。

若要設定顯示關聯資料錄的查詢

  1. 在 [詳細資料] 檢視中,按 ENTER 在 MasterDetails2.aspx 頁面的 [SqlDataSource1] 控制項下留出空間。

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

  3. 使用下列步驟,設定該控制項以使用第二個資料來源控制項:

    1. 在 [選擇資料來源] 清單中,選取 [<新增資料來源>]。

    2. 選取 [資料庫]。

    3. 按一下 [確定]。

    4. 在連接下拉式清單中,按一下先前在逐步解說中建立並儲存的連接。

    5. 按一下 [下一步]。

    6. 從 [資料表或檢視選項] 下的 [名稱] 清單中,選取 [產品]。

    7. 在 [資料行] 方塊中,選取 [ProductID]、[ProductName] 和 [CategoryID]。

    8. 按一下 [WHERE]。

      接著會顯示 [加入 WHERE 子句] 對話方塊。

    9. 從 [資料行] 清單中,選取 [CategoryID]。

    10. 從 [運算子] 清單中,選取 [=]。

    11. 從 [來源] 清單中,選取 [控制項]。

    12. 在 [參數屬性] 下的 [控制項 ID] 清單中,選取 [GridView1]。第二個方格的查詢將從第一個方格的選取範圍中取得其參數值。

    13. 按一下 [加入] 然後再按 [確定],關閉 [加入 WHERE 子句] 對話方塊。

    14. 按 [下一步]。

    15. 在 [預覽] 頁面上,按一下 [測試查詢]。

      此精靈會顯示一個對話方塊,以提示您輸入要在 WHERE 子句中使用的值。

    16. 在方塊中輸入 4,然後按一下 [確定]。

      分類 4 的產品資料錄隨即顯示。

    17. 按一下 [完成]。

  4. 在 [DetailsView 工作] 功能表中,按一下 [啟用分頁]。

    這將允許您捲動每個產品資料錄。

  5. 選擇性地,在 [屬性] 視窗中,開啟 [PagerSettings] 節點並選取不同的 [模式] 值。

    依照預設,您可以透過按一下頁碼逐頁查看資料錄,不過您也可以選取選項,使用下一頁或上一頁連結。

您現在可以測試主版方格和詳細資料檢視的組合。

若要測試網頁

  1. 按 CTRL+F5 執行頁面。

  2. 在方格中,選取分類。

    [DetailsView] 控制項隨即顯示與該分類相關聯的產品。

  3. 使用 [DetailsView] 控制項中的頁面巡覽區連結,巡覽至同一分類中的其他產品。

  4. 在方格中,選取不同的分類。

  5. 在 [DetailsView] 控制項中檢閱該分類的產品。

在不同的頁面上顯示主版/詳細資料

在此逐步解說的最後一部分中,您將建立另一個變化型式,即在不同的頁面上顯示主版和詳細資料的資料錄。主版資料錄會再次顯示在包含每個資料錄之超連結的方格中。當使用者按一下超連結時,他們會巡覽至第二個頁面,在其中可檢視顯示完整「產品」資料錄之 DetailsView 控制項中的詳細資料資料錄。

若要顯示主版資料錄

  1. 將新頁面加入至網站,並將其命名為 MasterCustomers.aspx。

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

  3. 在頁面中輸入客戶,並將文字格式化為標題。

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

  5. 在控制項上的 [GridView 工作] 功能表中,從 [選擇資料來源] 清單選擇 [<新增資料來源>],然後使用精靈執行下列事項:

    • 按一下 [資料庫]。

    • 連接至 Northwind 資料庫 (連接 [NorthwindConnectionString])。

    • 從 [Customers] 資料表擷取 [CustomerID]、[CompanyName] 和 [City] 資料行。

  6. 選擇性地,在 [GridView 工作] 功能表上選取 [啟用分頁] 核取方塊。

  7. 在 [GridView 工作] 功能表中,選擇 [編輯資料行]。

    [欄位] 對話方塊隨即出現。

  8. 清除 [自動產生欄位] 核取方塊。

  9. 在 [可用欄位] 下,選擇 [超連結欄位],按一下 [加入],然後設定下列屬性:

    屬性

    Text

    細節

    DatahrefFields

    CustomerID

    這表示超連結應該從 [CustomerID] 資料行取得其值

    DatahrefFormatString

    DetailsOrders.aspx?custid={0}

    這會建立硬式編碼的連結,以巡覽至 DetailsOrders.aspx 頁面。該連結也會傳遞名為 custid 的查詢字串變數,該變數的值將使用 DatahrefFields 屬性中參考的資料行填入。

  10. 按一下 [確定],關閉 [欄位] 對話方塊。

您現在可以建立詳細資料頁面,接受來自主版頁面 (Master Page) 的值。

若要建立詳細資料頁面

  1. 將新頁面加入至網站,並將其命名為 DetailsOrders.aspx。

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

  3. 在頁面中輸入訂單,並將文字格式化為標題。

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

  5. 在控制項上的 [GridView 工作] 功能表中,從 [選擇資料來源] 清單選取 [<新增資料來源>]

  6. 在 [選取資料來源類型] 清單中,按一下 [資料庫],然後再按 [確定]。

  7. 從連接清單中,選取先前在逐步解說中建立並儲存的連接 (NorthwindConnectionString)。

  8. 按一下 [下一步]。

    此精靈會顯示可以建立 SQL 陳述式的頁面。

  9. 從 [名稱] 清單中,選取 [訂單]。

  10. 在 [資料行] 方塊中,選取 [OrderID]、[CustomerID] 和 [OrderDate]。

  11. 按一下 [WHERE]。

  12. 從 [資料行] 清單中,選取 [CustomerID]。

  13. 從 [運算子] 清單中,選取 [=]。

  14. 從 [來源] 清單中,選取 [QueryString]。

    這會指定,查詢將根據使用查詢字串傳遞到頁面的值選取資料錄。

  15. 在 [參數屬性] 下的 [QueryString 欄位] 方塊中,輸入 custid。

    查詢將從查詢字串取得客戶 ID 值,其建立於在 MasterCustomers.aspx 頁面中按一下 [詳細資料] 連結時。

  16. 按一下 [加入]。

  17. 按一下 [確定],關閉 [加入 WHERE 子句] 對話方塊。

  18. 按一下 [下一步],然後再按 [完成] 關閉精靈。

  19. 從 [工具箱] 的 [標準] 節點中,將 [超連結] 控制項拖曳至頁面。將其 [文字] 屬性設定為 [回到客戶],將其 [href] 屬性設定為 [MasterCustomers.aspx]。

您現在可以測試關聯的主版/詳細資料頁面。

若要測試網頁

  1. 切換至 MasterCustomers.aspx 頁面。

  2. 按 CTRL+F5 執行頁面。

  3. 按一下客戶的 [詳細資料] 連結。

    瀏覽器會顯示 DetailsOrders.aspx 頁面以及選取之客戶的訂單。請注意,瀏覽器 [位址] 方塊中的 URL 為:

    DetailsOrder.aspx?custid=x
    

    其中 x 是選取之客戶的 ID。

  4. 按一下 [回到客戶] 連結,選取不同的客戶,然後再按一次 [詳細資料] 連結測試您是否可以檢視客戶的訂單。

後續步驟

此逐步解說說明了從關聯資料表顯示資料的各種方法。所有案例具有下列共同點:它們均依賴於參數型查詢,且參數值可在執行階段自動傳遞到查詢。您可能會想要實驗使用關聯資料的其他方法。例如,您可能要:

請參閱

概念

資料來源控制項概觀

使用資料來源控制項修改資料