我有一个动态控件页面,包括文本框,单选按钮,复选框(都绑定到面板)。
我在Page_init函数上运行我的创建控制功能。
所以我有类似的东西:
protected void Page_Init(object sender, EventArgs e)
{
PopulateControls();
}
protected void PopulateControls()
{
....
for (int j = 0; j < dt.Rows.Count; j++)
{
...create dynamic controls
}
Panel1.Controls.Add(dynamic controls);
}
在回发时(例如,当我取消选中复选框时)屏幕会跳到顶部。
通常,当我不使用动态控件时,我只是在每个控件周围添加 UpdatePanel / ContentTemplate 。但由于我现在无法做到这一点,有没有办法阻止页面在回发时跳到顶部?
谢谢!
答案 0 :(得分:3)
您可以动态地向UpdatePanel
添加控件。
您必须将它们添加到ContentTemplateContainer.Controls
。
for (int j = 0; j < dt.Rows.Count; j++)
{
...create dynamic controls
}
UpdatePanel1.ContentTemplateContainer.Controls.Add(dynamic controls);
答案 1 :(得分:2)
您的代码
Panel1.Controls.Add(dynamic controls);
表示您使用的是面板,而不是 UpdatePanel 。使用 UpdatePanel 的方式与使用Panel的方式相同,唯一的例外是您将控件添加到 ItemTemplate 而不是Panel。在Panel的情况下,它直接保存控件,因为它是一个容器,而在UpdatePanel的情况下,它包含属性或控件的 ContentTemplateContainer 。因此,您可以使用类似下面的内容而不是上面的内容。
UpdatePanel1.ContentTemplateContainer.Controls.Add(button1);
如果您要创建多个控件,请务必在 for循环的正文中包含此行代码。
希望这有帮助。