2010-10-12 55 views
0

假設我在網頁用戶控件中有三個DropDownList控件,它們彼此依賴。從Web用戶控件獲取控制值

  • 分類
  • 品牌
  • 產品

說明: 我選擇從分類類別下拉列表中後,相關品牌都裝在品牌DropDownList,當我選擇特定的相同情況品牌,他們都位於網絡用戶控制中,因爲我在不同的頁面上使用它太多,我不想在所有頁面上覆制和粘貼相同的代碼。

問題:頁面可以包含一個GridViewDataSource控制其需要額外的Where參數獲取在所需的所有數據和參數可以在產品DropDownList控制內取決於所選產品。

問題:那麼如何才能得到從產品的DropDownList選定的產品價值將其綁定到SQLDataSource或任何其他DataSource控制。

我的想法:我相信我可以通過以下方式解決這個問題。

  • 我可以使用更新一次產品選擇的靜態變量。該字段變量可能是公開的,所以每個人都可以達到它
  • 所選產品DropDownList可以爲我創建一個QueryString字段來抓取選定的值。
  • 以同樣的方式,下拉列表可以即時創建Session變量,我可以獲取值
  • 它可以創建隱藏字段也許。

但:那些是我的一些想法,但我發現他們太天真實施。我需要一些優雅和滿足的東西來解決這個問題。它應該像從Web用戶控制到外部世界的網關。

也許一個單獨的類或屬性可以幫助我在網關解決方案。

無論如何,我在等你的答案。

回答

2

如果我理解正確的問題:

您可以將屬性添加到公開產品DDL用戶選定的值控制。

您還可以從產品DDL選定值更改時觸發的用戶控件添加和引發事件。創建一個包含產品值的自定義事件參數,允許它直接傳遞給事件處理程序。

然後,您的頁面可以處理由用戶控件引發的事件,獲得產品價值並綁定網格。

0

您可以將DropDownList.SelectedIndexChanged事件綁定到同一個函數,並測試每個DropDownList的SelectedValue屬性。如果它們的SelectedValues有效,則將網格綁定到您的DataSource。

我已經在過去做過這些事情,當我需要用戶在查詢數據庫之前輸入一定數量的數據。如果DropDownLists無效,我在GridView上設置Hidden屬性,並在正確綁定時重置它。