0

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

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() ,因为这会弄乱订单并使我多打一次数据库。

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

4

1 回答 1

1

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

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

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

于 2012-07-20T17:55:27.483 回答