簡體   English   中英

我可以避免使用UpdatePanel殺死viewstate嗎?

[英]Can I avoid having an UpdatePanel that kills viewstate?

我選擇具有gridview的頁面,該gridview向用戶顯示他們可以單擊以“鑽取”的數據項列表 - 將它們重定向到數據維護頁面。

由於列表可能會變長,因此我們在頂部有一系列復選框和下拉列表作為過濾器。

我們剛剛使用UpdatePanelAnimationExtender實現了UpdatePanel,這樣當頁面長途返回數據庫時,它們會彈出一個很好的“Processing ...”。

問題是,這似乎打破了下拉列表和復選框上的視圖狀態。 現在,當他們轉到“詳細信息頁面”並點擊“返回”按鈕返回“選擇”頁面時,復選框和下拉列表中的選定值將恢復為其初始默認值。 列表仍然填充,但他們“忘記”用戶點擊數據維護頁面時的內容。

我為UpdatePanel取出了.aspx代碼,動畫擴展並重新測試,一切都很完美。 因此,顯然,UpdatePanel和/或AnimationExtender與viewstate不兼容。

有沒有辦法可以阻止UpdatePanel的操作實際上將“.SelectedValue”屬性歸零?

首先,我將從UpdatePanel中刪除您的“過濾”控件。 假設這些控件的數據在Page_Load上有價值,每次將過濾器應用於GridView時都不需要刷新它們。 只刷新GridView,因此它可能是UpdatePanel中應該包含的唯一控件。

可以添加每個過濾控件作為更新UpdatePanel的觸發器,方法是在UpdatePanel控件的部分中聲明它們。 或者,如果過濾過程是由“提交”之類的按鈕調用的,那么這將是要在該部分中聲明的控件。 這應該保留瀏覽器緩存中的過濾控件的值。

你也可以試試Nikhil Kothari的UpdateHistory控件 (Nikhil有一個很棒的博客,順便說一下),它會將UpdatePanel的內容保存為瀏覽器歷史列表中的歷史條目。

編輯:僅供參考,UpdatePanel不會“殺死”ViewState。 ViewState通過UpdatePanel的更新機制來回傳輸,如果ViewState過大,通常會導致性能問題。 您所看到的是瀏覽器的歷史記錄緩存不存儲已在連續回調中更新的值。 以上技術應該有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM