2010-11-09 50 views
0

我在頁面上有兩個感興趣的控件:一個DropDownList和一個Button。如果用戶按下按鈕,他會得到一個彈出窗體,當完成時,會導致基本頁面完全重新加載,從而丟失DropDownList中的值。澄清,這是一個刷新,而不是回發。我無法改變它使其成爲回傳。通過此頁面刷新在DropDownList中保持所選值最直接的方式是什麼?我無法避免頁面刷新,因爲在彈出窗口中輸入的數據反映在基本頁面的其他位置。如何在頁面刷新之間保留控件的值/文本屬性?

更新

我拼湊起來的,我不是跟非常開心出不確定性的解決方案:當用戶點擊該按鈕時,我使用JavaScript來獲取下拉的電流值,並通過與查詢字符串到被加載的彈出窗口。當用戶點擊彈出窗口中的「保存」時,導致數據被保存,然後重新加載基本頁面,我首先將querystring值存儲到Session變量中。加載時的基本頁面查看所述Session變量。如果存在值,則會相應地設置下拉列表的值並刪除Session變量。

雖然有點奇怪,但它是我能想到的最好的。我知道我的Gracious Benefactors不喜歡使用Session變量,但考慮到頁面重新加載,我無法想出一個替代方案。另外,由於Session變量是短暫的,在頁面關閉前不久創建,然後在打開後續頁面後立即刪除,我希望這是可以接受的。

對比意見,駁斥我的解決方案或推理,熱烈歡迎。

結論

最終,在我所描述的解決方案,我仁慈的恩人,我們商定了一個替代做法:如果選擇在DropDownList提出,它必須被打開彈出之前保存。這完全避免了整個ViewState問題。

+0

所有這些都應該自動在[ViewState](http://msdn.microsoft.com/en-us/library/ms972976.aspx) – 2010-11-09 20:43:24

+0

或者ajax post – 2010-11-09 21:04:48

+0

中看到頁面可能會幫幫我。所以我們可以看到你是如何做你的彈出窗體和回發。 – David 2010-11-09 22:49:33

回答

1

對於更新的問題:

的解決方法正試圖聽起來像它應該工作。這不是你想使用SessionState的事情,但是這裏有需求使得情況變得不尋常。

根據你如何獲得基本頁面來重新加載,你可能會添加一個查詢字符串到那個可以節省你的Hte值在SessionState中。但我想你可能已經考慮過了。

但基本上,因爲Postback值和viewstate是不可能的,所以SessionState和查詢字符串是唯一的選擇。噢,除非你被允許使用HTML5本地存儲? (可能不是)


從問題更新之前:

如果aspnetForm被調回的價值應該被自動回傳值的方式依然存在。因此,首先要了解的是,您的表單是通過回傳還是以其他方式刷新頁面。

如果你不能回發主表單,那麼rockinthesixstring表示一個Ajax文章可能是你需要的。另外,如果您想將數據源綁定到DropDownList或嘗試自己保留selectedValue,然後檢查並重新考慮這一點,那麼可以使用任何其他方法。

+0

這是一個重新加載而不是回傳,我也不能改變頁面來實現它。我正在更新這個問題來澄清這一點。 – 2010-11-09 23:22:54

相關問題