在另一个控件之前插入控件

AJ.*_*AJ. 11 asp.net

如何在asp.net中的另一个控件之前动态插入控件.让我们说control1是网页上的一些控件,我想在control1之前动态创建和插入一个表.

例如

table1 = new Table();
table1.ID = "Table1";
Run Code Online (Sandbox Code Playgroud)

接下来会发生什么?要添加一个控件作为一个孩子,我会这样做:control1.Controls.Add(table1);但我怎么能插入table1作为control1的前一个兄弟?

KP.*_*KP. 17

如果你想在新的控制(controlB)立即之前controlA,你可以决定的指标controlAPage.Controls收集,并插入controlB在该位置.我相信这将controlA通过一个指数向前推进,使他们成为所需的直接兄弟姐妹.

if(Page.Controls.IndexOf(controlA) >= 0)
    Page.Controls.AddAt(Page.Controls.IndexOf(controlA), controlB);
Run Code Online (Sandbox Code Playgroud)

编辑:

还有一点需要注意 - 上面假设控制A和B在根页面上.您还可以使用该Parent属性来确保兄弟插入无论controlA页面层次结构位于何处都可以正常工作:

Control parent = controlA.Parent;

if(parent != null && parent.Controls.IndexOf(controlA) >= 0)
{
    parent.Controls.AddAt(parent.Controls.IndexOf(controlA), controlB);
}
Run Code Online (Sandbox Code Playgroud)

我实际上更喜欢这种方法,因为它更灵活,不依赖于Page.

  • 你会在哪个活动中称之为?因为我总是得到控件集合在DataBind,Init,Load,PreRender或Unload阶段无法修改. (2认同)