ASP.Net单选按钮列表

时间:2010-03-21 17:52:01

标签: asp.net

我试图创建一个反馈表单,我有一些类似于这个

的模拟代码
    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 
                }
            }
        }
    }
}

这似乎不起作用......我不知道我哪里出错!!

3 个答案:

答案 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中重新创建这些页面请求并自行维护状态。