asp.net动态控制值在回发上

时间:2014-04-29 03:24:43

标签: asp.net webforms dynamic-controls

在asp.net Web表单应用程序中,我从SQL数据库中随机提取最多2个问题和最多3个答案(针对每个问题)。对于每个问题,我动态创建一个RadioButtonList控件来保存答案集。

当触发回发时,我需要读取每个RadioButtonList的值。我不需要仅仅根据所选索引/值保留控件本身,因为如果答案错误,将创建一组新的(不同的)问题和答案,如果答案正确,则会将用户重定向到新页面。

我试图在回发期间在Page_init事件中重新创建控件,但因为我的动态控件是基于随机数据集创建的,所以每次都会有不同的。

在Page_Load上创建动态控件:

foreach (DataRow question in dt_questions.Rows)
{
    questionCounter++;

    RadioButtonList RBL_Answers = new RadioButtonList();
    RBL_Answers.ID = "RBL_Answers_" + questionCounter;

    // fill radio list with answers to pick from
    foreach (DataRow answer in dt_answers.Rows)
    {
        ListItem item = new ListItem(answer["IA_Text"].ToString(), answer["IA_Correct"].ToString());
        RBL_Answers.Items.Add(item);
    }

    Panel_ContentQA.Controls.Add(RBL_Answers);
}

1 个答案:

答案 0 :(得分:0)

要解决这个问题,我必须改变我的工作方式,以便SQL页面中创建的控件的(随机)行的主键ID存储在ViewState中。发生回发时,将重新创建控件,从SQL中获取与存储在ViewState中的PK相对应的相同数据。