2009-10-13 28 views
1

全部如何使用枚舉來管理不同狀態下的asp.net頁面

我遇到了似乎是ASP.NET頁面生命週期問題。我目前有一個用戶控件嵌入到我的頁面。現在取決於從菜單項目列表中選擇的選項,該頁面可以處於由控件內的PageStates Enum所表示的三種狀態之一。在選擇菜單項的頁面僅僅更新從控制

  • 初始狀態(沒有congifurable)
  • 編輯(這使用下拉擴展,使可視範圍內它一個GridView)
  • 增加暴露的屬性(此使用另一個下拉劑和具有不同特性使得同樣在GridView可見不過)

問題

  1. 該頁面將如果菜單項選擇兩次
  2. 控件是在GridView上可見時,他們不應該是
  3. 頁「國家」本身只進入正確的「國家」,似乎一個滯後後面的狀態

我認爲我的主要問題是,網格視圖具有複選框繪製如果頁面是添加模式,但是您需要選擇添加菜單項選項兩次以獲得它進入狀態,我相信這是因爲我設置了菜單項被選中時的頁面狀態,但網格行已經創建在這一點上(我在RowCreated事件中的網格視圖中動態創建複選框

有沒有人對我如何解決這個問題有任何建議?這個實施有沒有工作?

+0

我relly認爲你應該與我們分享您的代碼在這裏。我有一個很好的感覺,這可能是一個很容易修復的疏忽。 – 2009-10-13 14:39:44

回答

0

我設法按照以下方式解決這個問題。

潛在的問題是,我正在更新頁面狀態之前發生的RoWCreated事件上創建我的複選框。

所以我創建了我自己的子程序,名爲createCheckBoxes,它在頁面狀態被正確更改時被調用。

這解決了我的最小化性能開銷問題,從我的初步調查

1

如果您的控件觸發了更改狀態的事件,並且您正在重繪page_load事件,那麼只有在控件事件觸發後,您的狀態纔會更新。將頁面構造移動到生命週期中的page_prerender或類似事件。

如果您需要更多關於排序頁面事件觸發的幫助,請在您的aspx頁面的頁面指令中添加Trace =「true」。