2008-10-07 23 views
1

要澄清所有此問題,絕對不是源於控件的重新綁定,並且綁定後該值不會保留初始值。DropDownList何時在SelectedIndexChanged事件處理程序中保留來自回發的值

我在一個正在被用於多個項目的aspx頁面上有一個DropDownList。

沿着頁面的生命週期,在處理SelectedIndexChanged事件之前,SelectedValue被改變。

在代碼到達事件處理程序的一個項目中,SelectedValue返回從客戶端發佈的內容,而另一個項目中存在新的SelectedValue。

Viewstate在兩種情況下都處於開啓狀態,控件沒有被反彈,並且遵循了我可以收集的所有相同的流程。

該控件沒有被再次初始化,我徹底檢查了這一點,並沒有保留初始值,而是保留了代碼中設置的值。

我實際上需要在第一個項目中發生的事件處理程序點處的發佈值,但不明白爲什麼它會更改回發佈的值以及如何在第二個項目中複製此行爲。

我會很樂意進一步澄清,如果有任何不清楚。

回答

2

也許某些初始化在on_load事件中執行了兩次,因爲您不檢查頁面是否在測試中使用IsPostBack回發?

它到底會發生到我同事的一個十分鐘前:-)

+0

該控件沒有被再次綁定,邏輯與postback無關 – YonahW 2008-10-07 13:34:42

0

我通常看到這種行爲,當我忘記在某處簽到的IsPostBack。在進入SelectedIndexChanged事件處理程序之前,頁面將加載所有原始數據。

2

許多人錯誤地認爲DropDownLists必須具有ViewState才能保留選定的值。我幾乎從來沒有在DropDownLists上將EnableViewState設置爲true,因爲它們可以在發佈值的表單中正常工作。 (並將其設置爲true,在數據綁定控件會造成長期的ViewState)

的公佈值(在下拉列表中選擇的項目)從後參數加載頁面是OnInit後,因此,如果您綁定數據到OnInit的下拉菜單中,它將正常工作。

如果你綁定在OnLoad,選定的值將被覆蓋。

也許你是在錯誤的事件數據綁定,以便所選的值被下拉的DataBind調用覆蓋?

+0

我的印象是,viewstate並不是必要的,但它現在在那裏。 雖然我正在改變SelectedValue,但我並沒有重新綁定控件,並且代碼在兩個項目中都完全相同,其中一個項目不會丟失值。 – YonahW 2008-10-07 13:36:24

相關問題