C# 获取动态创建的单选按钮的值
我以这种方式创建了单选按钮数组:C# 获取动态创建的单选按钮的值,c#,asp.net,C#,Asp.net,我以这种方式创建了单选按钮数组: 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] = radi
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];
}
RadioButton[]单选=新的RadioButton[大小];
对于(int i=0;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;
}
}
}
受保护的无效投票\u单击(对象发送者,事件参数e)
{
RadioButton r=新的RadioButton();
对于(int i=0;i<(int)会话[“cancount”];i++)
{
r=(单选按钮)(会话[“投票”+i.ToString());
如果(右勾选)
{
//做一些事情;
}
}
}
但是
r.checked
的值总是false
,为什么它没有更改???这个问题缺少很多上下文,但是考虑到您编写web站点的方式看起来非常奇怪,我想问题是您从未添加单选按钮来控制页面的控件层次结构。另外,我猜您是在Page_Load事件而不是Page_Init事件中创建单选按钮,这是一个问题,因为它们不会从回发中拾取单击,因为它们是在ASP.NET处理单击之后添加的
如果这对您来说没有任何意义,那么您需要多读一点关于ASP.NET如何工作的内容。你不能像对待桌面应用程序一样对待它。事件及其处理程序由HTTP POST分隔,这会导致创建和初始化控件的方式和位置的敏感性。除去所有会话状态内容,正在单击的按钮将作为“发送方”传递给事件处理程序。要访问单击的单选按钮,只需将其强制转换为单选按钮,即可访问您的对象:
RadioButton r = (RadioButton)sender;
您最好使用RadioButtonList,而不是正在设置的会话变量。然后只需在页面上添加RadioButtonList,并在循环中添加按钮:
myRbl.Items.Add(new ListItem("text", i.ToString(), true));
我不完全确定你想在这里完成什么。会话与确定他们是否选择了单选按钮有什么关系?您是否试图跟踪用户投票的内容?还有,您是如何将单选按钮添加到页面的?是的,我想跟踪用户投票的内容,并且我没有发布我的孔代码,我正在将这些单选按钮添加到我添加到页面面板的表格中。请添加更多上下文-例如,您创建单选按钮的页面生命周期的哪个部分?预初始化,初始化,加载,预渲染?在哪里?是的,你是对的。我在Page_Load事件中创建了单选按钮,当我在Page_Init事件中创建它们时,我的代码工作正常。非常感谢。我很高兴它成功了。我本来希望通灵阅读能得到更多+1,但我会接受我得到的;)