2009-12-24 47 views
4

我試圖將另一個eventHandler添加到RadioButton。這是示例代碼(這是工作):在動態表中添加RadioButton CheckedChanges中的新事件處理程序

ASP.NET:

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
<asp:Button ID="Button1" runat="server" Text="Button" /> 

C#:

protected void Page_Load(object sender, EventArgs e) 
{ 
    RadioButton RB1 = new RadioButton(); 
    RB1.ID = "1"; 
    RB1.GroupName = "bla"; 
    RB1.CheckedChanged += new EventHandler(CheckedChanged); 
    RadioButton RB2 = new RadioButton(); 
    RB2.ID = "2"; 
    RB2.GroupName = "bla"; 
    RB2.CheckedChanged += new EventHandler(CheckedChanged); 
    PlaceHolder1.Controls.Add(RB1); 
    PlaceHolder1.Controls.Add(RB2); 

} 
protected void CheckedChanged(object sender, EventArgs e) 
{ 
    Label1.Text = ((RadioButton)sender).ID; 
} 

在項目中,我的RadioButtons動態創建(行的數量我從數據庫中獲取)。同樣加入eventHandler不工作,但如果我寫

MyRadioButton.Load += new EventHandler(Another_method); 

Another_method將啓動,但在

MyRadioButton.CheckedChanged += new EventHandler(Main_method); 

如果我選擇了RadioButtons之一Main_method將無法​​啓動。 有什麼不對?


@KevinP 這是我的代碼:

Table tb1 = new Table(); 
    PlaceHolder1.Controls.Add(tb1); 
    TableRow tr = new TableRow(); 
    TableCell tc = new TableCell(); 
    //adding the first row with title" 
    tr.Cells.Add(tc); 
    for (int i = 0; i < ((ArrayList)(result[0])).Count; i++) 
    { 
     tc = new TableCell(); 
     Label example = new Label(); 
     example.Text = ((columnsResultFromSqlClients)(i)).ToString(); 
     tc.Controls.Add(example); 
     tr.Cells.Add(tc); 
    } 
    tb1.Rows.Add(tr); 
    //filling the table 
    for (int i = 0; i < result.Count; i++) 
    { 
     tr = new TableRow(); 
     tc = new TableCell(); 
     //adding radio button 
     RadioButton RB = new RadioButton(); 
     RB.Attributes.Add("value", ((ArrayList)(result[i]))[0].ToString()); 
     RB.GroupName = "for_selecting"; 
     RB.ID = ((ArrayList)(result[i]))[0].ToString(); 
     RB.CheckedChanged += new EventHandler(RB_CheckedChanged2); 
     //RB.AutoPostBack = true; 

     RB.Attributes.Add("AutoPostBack", "True"); 
     tc.Controls.Add(RB); 
     tr.Cells.Add(tc); 
     //adding content 
     for (int j = 0; j < ((ArrayList)(result[i])).Count; j++) 
     { 
      tc = new TableCell(); 
      Label example = new Label(); 
      example.Text = ((ArrayList)(result[i]))[j].ToString(); 
      tc.Controls.Add(example); 
      tr.Cells.Add(tc); 
     } 
     tb1.Rows.Add(tr); 
    } 

如果我使用RB.AutoPostBack = true;,我沒有時間按下按鈕提交我的選擇,導致頁面當我點擊一個會重新加載的單選按鈕。 另外,RB_CheckedChanged2代碼:

protected void RB_CheckedChanged2(object sender, EventArgs e) 
{ 
    RadioButton tempRB = (RadioButton)sender; 
    if (tempRB.Checked) 
    { 
     selected_id = tempRB.ID; 
    } 
} 

select_idstatic int varible與非標準值= 「-1」。

回答

1

如果我沒有弄錯,在ASP.Net中使用動態控件,您需要在回發中「重新連接」它們的事件。請記住,在回傳中,動態控件不再存在。你必須重新創建它們。

相關問題