获取

2013-05-12 51 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));