维护提交后在代码隐藏中创建的控件



我有一个函数,看起来像这样(简化):

private void showQuestions()
{
     for (int ansNum = 0; ansNum < 6; ansNum++)
     {
         RadioButton rb = new RadioButton();
         rb.ID = x + letterArray[randomArray[ansNum]].ToString();
         rb.GroupName = "answer" + x;
         rb.Text = char.ToUpper(letterArray[currentCount]) + ". " + dt.Rows[x - 1].ItemArray[2 + randomArray[ansNum]];
         fieldSet.Controls.Add(rb);
     }
}

如果不是IsPostBack,我会调用pageLoad上的showQuestions()。该方法实际上是将数据库中的问题随机化,然后将单选按钮添加到我的字段集控件中。上面的代码缺少大部分内容。

在提交时,我希望这些单选按钮保留在页面上,但它们已被删除。我不想再次调用showQuestions(),因为这会打乱订单,让我花更多的时间访问数据库。

单击提交并进行其他更改后,如何将它们保留在页面上?

如果每次都不调用方法来创建控件,那么在回发后将无法在页面上保留动态创建的控件。您也可以使用UpdatePanel来实现这一点,但这是一个非常昂贵的http调用,无论如何都会导致Page_Load方法在服务器上被命中。

我建议使用ajax调用来发布您的数据。在提交表单时,您可以调用客户端方法,该方法a)填充表示表单数据的json对象,b)使用ajax将数据发布到服务方法。

同样,UpdatePanel也可以工作,但我倾向于不惜一切代价避免它。

最新更新