Asp.net 在另一个控件之前插入一个控件
如何在asp.net中动态地将一个控件插入另一个控件之前。假设control1是网页上的某个控件,我想在control1之前动态创建并插入一个表 e、 gAsp.net 在另一个控件之前插入一个控件,asp.net,Asp.net,如何在asp.net中动态地将一个控件插入另一个控件之前。假设control1是网页上的某个控件,我想在control1之前动态创建并插入一个表 e、 g 但是接下来会发生什么呢?要作为子控件添加控件,我将执行以下操作:control1.Controls.add(表1)但我究竟如何将table1作为control1的前一个同级插入?您是否尝试过control1.Controls.AddAt(0,table1)?有点奇怪,他们没有像大多数其他集合类型那样调用Insert方法。如果您希望新控件(co
但是接下来会发生什么呢?要作为子控件添加控件,我将执行以下操作:
control1.Controls.add(表1)
但我究竟如何将table1作为control1的前一个同级插入?您是否尝试过control1.Controls.AddAt(0,table1)
?有点奇怪,他们没有像大多数其他集合类型那样调用Insert方法。如果您希望新控件(controlB
)紧跟在controlA
之前,您可以在页面中确定controlA
的索引。Controls
集合,并在该位置插入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);
}
实际上,我更喜欢这种方法,因为它更灵活,不依赖于
页面
,而不是control1。控件是control1的子控件吗?我需要在control1之前插入,在同一级别上。哇!对不起,我误解了。看起来您已经找到了解决方案。在哪种情况下,您会将其称为?因为我总是在数据绑定、初始化、加载、预渲染或卸载阶段无法修改控件集合。我很确定这和母版页有关,但我不确定。你能解释一下你所说的根页面级别是什么意思吗?有点不知道该查什么。刚刚检查了家长,我想是母版页搞乱了。我正在处理的控件的父控件是ContentPlaceHolder
。
Control parent = controlA.Parent;
if(parent != null && parent.Controls.IndexOf(controlA) >= 0)
{
parent.Controls.AddAt(parent.Controls.IndexOf(controlA), controlB);
}