2010-11-02 17 views
0

我想要做的是根據頁面上的其他下拉列表選項更改下拉列表。我所做的是將所有可能性寫入隱藏的文本框中。這是有效的,但是當有很多選擇的時候,頁面很慢。服務器端數據可用客戶端

有沒有更好的方法來做到這一點?

謝謝你的時間

+0

將選項放在「文本框」中的另一種方法是創建一堆隱藏的''列表,並且只顯示在任何給定時間想要的選項。除非真的有很多這樣的情況,否則在不同的選擇之間切換應該不會花很長時間。 – Pointy 2010-11-02 12:54:08

回答

2

最好的方法是使用AJAX。總之,你將需要:

  1. 編寫服務器端腳本(ashx的可能),返回相關結果的下拉依賴於某些變量
  2. 使用的JavaScript(或像jQuery庫)做AJAX調用ashx頁面。此調用將需要通過POST或GET將定義變量傳遞給服務器。
  3. 將此AJAX調用附加到選擇框的更改事件,以便當它們更改時其他可更新
  4. 當AJAX調用完成時,您將需要一個JavaScript函數來整理返回的數據。這些數據可以是添加到頁面的簡單HTML,也可以是需要格式化的更復雜的JSON對象。這是你的選擇。但是這種格式和響應需要用JavaScript編寫。
1

它可以使用一些可用的ASP.Net AJAX技術來完成。如果您將下拉列表框放置在UpdatePanel中並將它們設置爲異步回發,則可以使它們顯示爲在選擇時刷新。

因爲只有UpdatePanel內的代碼被刷新,所以結果的加載速度要快得多。

請參閱this article瞭解更多使用updatepanel和幾個下拉列表的示例。

0

由於laurencek表示AJAX將是最終的解決方案。在asp.net,有一個很好的樣本提供了一個可以理解的解釋,here。稍微使用一下Web Service可能會導致一些暫停,但仍然可以很好地解釋您正在查找的內容。

0

我將介紹一種可能的情況。

  1. 當您的頁面第一次加載時,會顯示一個「默認」選項列表。這是使用服務器端邏輯完成的。
  2. 當用戶點擊下拉列表,在客戶端使用Javascript時,可以計算其他人的行爲方式,並相應地操縱他們。
  3. 如果您的某個列表需要客戶端不可用的新信息,那麼您可以使用AJAX來輪詢服務器以獲取該信息。
  4. (可選)如果您不希望每次用戶在下拉列表中單擊時都要輪詢服務器,則可以在客戶端緩存新信息。