2009-07-30 61 views
1

我目前正在製作一個包含一些動態呈現的頁面的先進的Web應用。這些頁面是標準頁面,其中包含一個佔位符,其中主要內容由Xml和Xslt的組合顯示。ASP.Net Ajax的可摺疊擴展ViewState的問題

我最近一直在嘗試添加一個ASP.Net Ajax工具包可摺疊關語,讓崩潰,這是動態呈現的面板延伸。我已經將擴展標記添加到我們的主要xslt模板中,並且一切正常。那麼一切都很好,直到發回帖子並且面板回到他們的初始狀態。所以,例如,如果我加載了面板摺疊頁面,然後回發後頁面無法重置任何打開的面板,問題是由於我將動態內容存儲在視圖狀態本身以及頁面加載後從視圖狀態檢索它,而不是重新渲染Xml。

呼....有背景的問題。

現在的主要問題。你怎麼可以用JavaScript來與擴展器交互。我花了數天的時間確信我可以緩存頁面變量客戶端的狀態,然後重新應用狀態發佈回發。但是,似乎沒有關於如何完成此操作的文檔或知識。我發現的最好的是一些非常簡單的JavaScript,它將允許您註冊一些事件以在面板擴展或摺疊時捕獲。

所有我想要做的就是互動,並緩存每個面板的狀態。任何人都可以提出建議

回答

0

OK,萬一別人需要實現類似我現在已經得到了它的工作。

經過大量的研究,我發現,你可以連接到使用兩種方法的一些客戶端事件描述here

所以我決定最好的方法是編程添加一些隱藏的字段(ASP.Net HiddenField)到Page_Load()事件中的頁面,並將每個擴展器的名稱作爲分隔字符串添加到一個字段中,然後每個擴展器都有一個字段來保持擴展器狀態。一旦頁面發回,每個擴展器隱藏字段的值從Request.Form對象(其中的關鍵字是隱藏的字段ID)中檢索,否則,如果它是初始加載,則只處理默認值。

然後,我剛剛創建了一個簡單的客戶端腳本,它處理onExpand和onCollapse事件並更新特定擴展器隱藏字段的值。

在客戶端腳本的pageLoad事件中,我只是根據它的隱藏字段值設置參數狀態。

真的很簡單....應該有這樣的想法開始吧!