獲取

2013-05-12 56 views
1

我以這種方式創建的單選按鈕的陣列動態創建的單選按鈕的值:獲取

RadioButton[] radio = new RadioButton[size]; 

for (int i = 0; i < size ; i++) 
    { 
     radio[i] = new RadioButton(); 
     radio[i].ID = "voted"+i.ToString(); 
     radio[i].GroupName = "voted"; 
     Session[radio[i].ID] = radio[i]; 
    } 

,並且當用戶點擊按鈕的事件是

protected void Votes_Click(object sender, EventArgs e) 
{ 
    RadioButton r=new RadioButton(); 
    for (int i = 0; i < (int)Session["cancount"]; i++) 
    { 
     r=(RadioButton)(Session["voted" + i.ToString()]); 
     if (r.Checked) 
     { 
      //Do somethings; 
     } 
    } 
} 

r.checked的值是總是false,爲什麼它沒有改變?

+0

我不是很確定你要在這裏完成的。會話與確定他們是否選擇單選按鈕有什麼關係?你是否試圖跟蹤用戶投票的內容?另外你如何添加單選按鈕到頁面? – 2013-05-12 18:19:28

+0

是的我想跟蹤用戶投票的內容,並且我沒有發佈我的洞代碼,我將這些單選按鈕添加到表格中,我添加到頁面面板 – 2013-05-12 18:29:20

+0

請添加更多的上下文 - 例如,什麼部分頁面生命週期是你創建單選按鈕? preinit,init,load,prerender?哪裏? – x0n 2013-05-12 19:46:55

回答

1

這個問題缺少大量的上下文,但考慮到你似乎正在編寫你的網站完全奇怪的方式,我想象的問題是,你從來沒有添加單選按鈕控制頁面的控制層次結構。此外,我猜你正在Page_Load事件中創建單選按鈕,而不是Page_Init事件,這是一個問題,因爲他們不會從回發中選取點擊,因爲它們在之後被添加,點擊由ASP處理。淨。

如果這對你沒有任何意義,那麼你需要多讀一點關於ASP.NET的工作原理。你不能像桌面應用程序一樣對待它。事件和它們的處理程序由HTTP帖子分隔開來,從而使您在創建和初始化控件的方式和位置方面具有靈敏度。

+0

是的,你是對的。我在Page_Load事件中創建了單選按鈕,當我在Page_Init事件中創建它們時,我的代碼正常工作。非常感謝你 – 2013-05-13 08:22:38

+0

我很高興它解決了。我期待更多的+1通心理閱讀,但我會拿我給的;) – x0n 2013-05-13 13:35:42

1

擺脫所有會話狀態的東西,被點擊的按鈕作爲'發件人'傳遞給事件處理程序。要訪問被點擊的單選按鈕,只投它作爲一個單選按鈕,並有你的對象:

RadioButton r = (RadioButton)sender; 

你也最好使用RadioButtonList的,而不是你設置會話變量。然後,只需添加單選按鈕列表頁面上,並在循環中添加的按鈕:

myRbl.Items.Add(new ListItem("text", i.ToString(), true));