日期:2014-05-19  浏览次数:20410 次

c#中,动态添加的n个同类控件Button,如何根据id触发各自对应的事件?
是这样:一个表单中:

1、n道题目(以及对应选项)从数据库中同时读取出,读出的题数由数据库中记录数决定;(比如,是投票题)

2、对于每个题目,都动态加载对应的Button,用于提交这道题的答案。

3、点击题目1的“确定”按钮时,就提交题目1的答案.....点击题目n“确定”按钮时,就提交题目n的答案。

现在的问题是:我的button是动态添加的,其ID是   "button_ "+id.ToString()。我如何根据id来触发不同题目的提交事件呢?

我的部分代码如下:

while(dr.Read())
{

    ...............
        ..........
        id   =   dr[ "id "].ToString();                           //题目的ID
.........

TableCell   tc =   new   TableCell();                    
Button         btn_vote   =   new   Button();                       //按钮

btn_vote.ID   =   "btn_vote_ "+id;                                   //此处,Button.ID是动态的
btn_vote.Text   =   "投票 ";

btn_vote.Click+=new   EventHandler(btn_vote_Click);       //我这样写的话,都是触发btn_vote_Click事件,无法区分不同题目的提交事件


}
dr.Close();


private   void   btn_vote_Click(object   sender,EventArgs   e)     //提交选项事件
{
..........................               //请问:应该怎么写,才能区分出不同题目对应的触发事件
}      


请各位好心人帮忙详细解答一下,非常感激!




------解决方案--------------------
或者换思路,用膜版,repeater或者其他的,可以很容易记录id,出发itemcommand事件,我做过一个在线调查,也是类似很多题目,可以说和你的一样,用膜版就可以了。
------解决方案--------------------
private void btn_vote_Click(object sender,EventArgs e)
{
string ID = ((Button)(sender)).ID.ToString();
......
......
根据ID作处理
}
------解决方案--------------------
((Button)sender).ID属性。