我试图创建一个反馈表单,我有一些类似于这个
的模拟代码 for (int i = 1; i < 3; i++)
{
TableRow tr = new TableRow();
Table1.Rows.Add(tr);
TableCell QuestionCell = new TableCell();
// get the text for the question and stick it in the cell
QuestionCell.Text = "<b>"+i+".</b> Question " + i;
tr.Cells.Add(QuestionCell);
TableRow tr2 = new TableRow();
Table1.Rows.Add(tr2);
// create a cell for the choice
TableCell ChoicesCell = new TableCell();
ChoicesCell.Width = 1000;
// align the choices on the left
ChoicesCell.HorizontalAlign = HorizontalAlign.Left;
tr2.Cells.Add(ChoicesCell);
RadioButtonList rbl = new RadioButtonList();
rbl.ID = "Radio1_" + i;
ChoicesCell.Controls.Add(rbl);
rbl.Items.Add("1");
rbl.Items.Add("2");
rbl.Items.Add("3");
rbl.Items.Add("4");
}
显然这段代码没有任何意义,它只是为了试验我如何能够做这个反馈表,我现在的问题是曾经有人按下提交按钮(表格上有一个提交按钮)我该怎么办?通过表格从用户选择的单选按钮获取文本?在page_load !!中创建的反馈意见!
感谢您的帮助!!
编辑所以按下按钮后我会有这段代码
protected void Button1_Click(object sender, EventArgs e)
{
foreach (TableCell cell in Table1.Rows)
{
foreach (Control ctrl in cell.Controls)
{
if (ctrl is RadioButtonList)
{
if (ctrl.selected) // this doesnt works
{
string selected = ctrl.text // this doesnt work either
}
}
}
}
}
这似乎不起作用......我不知道我哪里出错!!
答案 0 :(得分:3)
我认为您必须将Control
转换为循环RadioButtonList
。
另外,请尝试使用SelectedValue
属性而不是selected
protected void Button1_Click(object sender, EventArgs e)
{
foreach (TableCell cell in Table1.Rows)
{
foreach (Control ctrl in cell.Controls)
{
if (ctrl is RadioButtonList)
{
string selected = ((RadioButtonList)ctrl).SelectedValue;
}
}
}
}
答案 1 :(得分:0)
这些控件的EnableViewState = false吗?如果将ViewState设置为false
,则在回发后服务器无法通过控件的用户状态看到更改答案 2 :(得分:0)
由于您按照自己的方式创建控件(几乎是动态),您需要在Page_Init中重新创建这些页面请求并自行维护状态。