如何在asp.net中的另一个控件之前动态插入控件。让我们说control1是网页上的一些控件,我想在control1之前动态创建和插入一个表。
e.g。
table1 = new Table();
table1.ID = "Table1";
但接下来会发生什么?要将控件添加为子项,我会这样做:control1.Controls.Add(table1);
但是我如何将table1作为control1的前一个兄弟插入?
答案 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)
吗?奇怪的是他们并没有像大多数其他集合类型一样调用方法。