C# .net 动态单选框 复选框 选中后获取问题。

如下动态创建j个单选框其ID值依次为ABCDEFG,希望点击按钮控件获取单选框ID值调试中仅有第一次选中A能正确获取再做任何修改都不能获取正确的ID会获取到“否”“否B”... 如下动态创建j个单选框 其ID值依次为A B C D E F G,希望点击按钮控件获取单选框ID值 调试中仅有第一次选中A能正确获取 再做任何修改都不能获取正确的ID 会获取到 “否” “否B”。求高手指出正确写法,以及复选框的写法。

int j = 2;//定义单选框数量 j值是从数据库中取出 这里暂定为2
//checkedchanged中获取并传递给按钮事件
string[] chioce = new string[7] { "", "", "", "", "", "", "" };
string[] ABC = new string[7] { "", "A", "B", "C", "D", "E", "F" };//存放单选框ID
protected void Page_Load(object sender, EventArgs e)//页面load
{
for (int xi = 1; xi <= j; xi++)//构造单选框
{
RadioButton[] arrayCheck = new RadioButton[xi + 1];
RadioButton temcheck = new RadioButton();
arrayCheck[xi] = temcheck;
arrayCheck[xi].GroupName = "A";
arrayCheck[xi].ID = xi.ToString();
arrayCheck[xi].CheckedChanged +=new EventHandler(_testpaper_CheckedChanged);
}
//单选框checkedchanged事件
private void _testpaper_CheckedChanged(object sender, System.EventArgs e)
{
int b=Convert.ToInt32(((RadioButton)sender).ID);
if (((RadioButton)sender).Checked == true)
{
chioce[b] = ABC[b];
}
else
{
chioce[b] = "";
}
}

protected void Button1_Click(object sender, EventArgs e)//按钮事件
{
string snswers = "";
//获取学员选择的答案
for (int i = 1; i <= j; i++)
{
snswers = snswers + chioce[i];
}
Response.Write(snswers);
}

解决后另有高分附送 谢谢
string[] ABC = new string[7] { "", "A", "B", "C", "D", "E", "F" };//存放单选框ID
这句写错了 单选框ID是xi循环变量
string[] ABC = new string[7] { "", "A", "B", "C", "D", "E", "F" };//存放一组字母变量用来为chioce赋值。
展开
 我来答
百度网友ea1c09c
2011-11-11 · TA获得超过1004个赞
知道小有建树答主
回答量:856
采纳率:0%
帮助的人:1300万
展开全部
RadioButton[] arrayCheck = new RadioButton[xi + 1];
是不是应该改用RadioButtonList ?
而且你每次循环都生成一个RadioButton[] ,却都只添加一个RadioButton
是不是应该把RadioButton[]当成公用的,而不是每次循环时生成呢? (其实我感觉你这里的 arrayCheck完全没有意义)
还有你是怎么把RadioButton添加到页面上的呢?这段代码你没有贴上来
下面是我改的一个例子,你试试吧,只改了Page_Load:
protected void Page_Load(object sender, EventArgs e)//页面load
{
for (int xi = 1; xi <= j; xi++)//构造单选框
{
RadioButton temcheck = new RadioButton();
temcheck.GroupName = "A";
temcheck.ID = xi.ToString();
temcheck.CheckedChanged += new EventHandler(_testpaper_CheckedChanged);
this.form1.Controls.Add(temcheck);
}
}
更多追问追答
追问
页面中有个div ID=p4
添加radiobutton控件的语句没贴上来 是p4.Controls.Add(arrayCheck[xi].);
另外按重新构造的单选框语句重写了 是简化了很多 也能动态创建控件,不过取checked还是不对,只有第一次打开页面并选择A才能正确获得,否则就会取得 "否",或者"否B”,
追答
你的chioce是为了实现多选吗?
snswers = snswers + chioce[i]; 在这里什么用处?
天堂_在左
2011-11-11 · TA获得超过152个赞
知道小有建树答主
回答量:155
采纳率:100%
帮助的人:53.2万
展开全部
Page_Load 函数里面加 判断if (!IsPostBack)
改为
if (!IsPostBack)
{
for (int xi = 1; xi <= j; xi++)//构造单选框
{
RadioButton[] arrayCheck = new RadioButton[xi + 1];
RadioButton temcheck = new RadioButton();
arrayCheck[xi] = temcheck;
arrayCheck[xi].GroupName = "A";
arrayCheck[xi].ID = xi.ToString();
arrayCheck[xi].CheckedChanged +=new EventHandler(_testpaper_CheckedChanged);
}

}
更多追问追答
追问
Page_Load 函数里面加 判断if (!IsPostBack)
没懂什么意思 能解说下这个语句吗?
追答
不然你按钮一点,页面重新加载,之前的选中内容都没有了。所以把 动态生成控件的 语句放在这个判断里面。页面第一次加载的时候 生成控件,以后都不生成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灰人王
2011-11-11 · TA获得超过2456个赞
知道大有可为答主
回答量:2401
采纳率:0%
帮助的人:930万
展开全部
RadioButton[] arrayCheck = new RadioButton[xi + 1];是用来干什么的?
追问
定义一组类名为arraycheck[xi]的单选框 其数量为j下标为xi+1 ,+1只是个人不习惯用下标0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式