在 asp.net 中,我如何动态地在另一个控件之前插入一个控件?假设 control1 是网页上的某个控件,我想要动态创建并在 control1 之前插入一个表格。
例如:
table1 = new Table();
table1.ID = "Table1";
但下一步怎么做?要将控件作为子级添加,我可以这样做:control1.Controls.Add(table1);
但是,我该如何在控件control1之前插入table1?
在 asp.net 中,我如何动态地在另一个控件之前插入一个控件?假设 control1 是网页上的某个控件,我想要动态创建并在 control1 之前插入一个表格。
例如:
table1 = new Table();
table1.ID = "Table1";
但下一步怎么做?要将控件作为子级添加,我可以这样做:control1.Controls.Add(table1);
但是,我该如何在控件control1之前插入table1?
controlB
) 立即出现在 controlA
之前,你可以确定 Page.Controls
集合中 controlA
的索引,并在该位置插入 controlB
。我认为这将使 controlA
的索引向前移动一个位置,从而使它们成为所需的相邻兄弟节点。if(Page.Controls.IndexOf(controlA) >= 0)
Page.Controls.AddAt(Page.Controls.IndexOf(controlA), controlB);
编辑:
还有一点需要注意-上述假设控件A和B位于根页面级别上。 您还可以使用Parent
属性,以确保兄弟插入无论controlA
在页面层次结构中的位置如何都能正常工作:
Control parent = controlA.Parent;
if(parent != null && parent.Controls.IndexOf(controlA) >= 0)
{
parent.Controls.AddAt(parent.Controls.IndexOf(controlA), controlB);
}
实际上,我更喜欢这种方法,因为它更灵活,不依赖于Page
。
control1.Controls.AddAt(0, table1)
吗?有点奇怪,他们没有像大多数其他集合类型一样调用 Insert 方法。