2013-05-20 62 views
1

我有一個頁面(使用MS Ajax)。根據其他選項,我可能需要在面板中創建一個單選按鈕列表。 這是按照以下方式完成的。以編程方式創建的RadioButtonList需要2次點擊

RadioButtonList rbl = new RadioButtonList(); 
    rbl.SelectedIndexChanged += new EventHandler(answer_Click); 
    rbl.AutoPostBack = true; 

    foreach (KeyValuePair<string, int> d in _answers) 
    { 
     ListItem li = new ListItem(d.Key.ToString(), d.Key.ToString()); 
     li.Attributes.Add("class", "radio");    
     rbl.Items.Add(li); 
    } 
    p.Controls.Add(rbl); 

這工作正常,除非在回發後我需要另一個RadioButton列表。該列表繪製正確,具有所有正確的選項,但現在當我第一次點擊某個選項時,它會填充並重置。它需要第二次點擊才能設置並觸發SelectedIndexChanged事件。

我摧毀並重新創建rbl once answer_Click被觸發(我知道這是因爲下一個創建的問題有不同的答案和選項)。

那麼,爲什麼我需要在第二個列表上點擊兩次?

+0

Ahy是它我總是找出答案/張貼後找到它。對不起,它與我綁定事件處理程序並調用Page.DataBind方法的順序有關 – Matt

回答

1

馬特!

看起來像你有一個ViewState問題。控件是在LoadViewState觸發器之後創建的,所以它們不會從瀏覽器中獲取它們的值來加載。您必須將此值保存在某處,使用JS,ViewState,QueryString,Session,DB來持久化狀態,然後將所選值加載到每個值中。

希望這對你有所幫助!請點擊此處查看有關ASP.NET Page Life Cycle的更多信息。