我有一个看起来像这样的功能(简化):
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()。该方法实际上是从数据库中随机化问题,然后将单选按钮添加到我的fieldset控件。上面的代码缺少很多内容。
在提交时,我希望这些单选按钮保留在页面上,但它们会被删除。我不想再次调用showQuestions(),因为这会使订单混乱,让我在额外的时间点击数据库。
点击提交并进行其他更改后如何将其保留在页面上?
答案 0 :(得分:1)
如果您每次都没有调用方法创建它们,那么在回发后您将无法在页面上保留动态创建的控件。您可以使用UpdatePanel来完成此任务,但这是一个非常昂贵的http调用,这会导致无论如何都会在服务器上命中Page_Load方法。
我建议使用ajax调用来发布您的数据。在提交表单时,您可以调用客户端方法,a)填充表示表单数据的json对象,以及b)使用ajax将数据发布到服务方法。
同样,UpdatePanel也会起作用,但我倾向于不惜一切代价避免它。