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

时间:2010-02-17 14:43:58

标签: asp.net

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

e.g。

table1 = new Table();
table1.ID = "Table1";

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

2 个答案:

答案 0 :(得分:17)

如果您希望新控件(controlB)在controlA之前,您可以确定controlA集合中Page.Controls的索引,并插入{{ 1}}在那个位置。我相信这会使controlB向前推进一个索引,使其成为所需的直接兄弟姐妹。

controlA

修改

还有一点需要注意 - 上面假设控制A和B在根页面上。您也可以使用if(Page.Controls.IndexOf(controlA) >= 0) Page.Controls.AddAt(Page.Controls.IndexOf(controlA), controlB); 属性来确保兄弟插入无论页面层次结构中Parent位于何处都能正常工作:

controlA

我实际上更喜欢这种方法,因为它更灵活,不依赖于Control parent = controlA.Parent; if(parent != null && parent.Controls.IndexOf(controlA) >= 0) { parent.Controls.AddAt(parent.Controls.IndexOf(controlA), controlB); }

答案 1 :(得分:0)

你试过control1.Controls.AddAt(0, table1)吗?奇怪的是他们并没有像大多数其他集合类型一样调用方法。