Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在另一个控件之前插入一个控件_Asp.net - Fatal编程技术网

Asp.net 在另一个控件之前插入一个控件

Asp.net 在另一个控件之前插入一个控件,asp.net,Asp.net,如何在asp.net中动态地将一个控件插入另一个控件之前。假设control1是网页上的某个控件,我想在control1之前动态创建并插入一个表 e、 g 但是接下来会发生什么呢?要作为子控件添加控件,我将执行以下操作:control1.Controls.add(表1)但我究竟如何将table1作为control1的前一个同级插入?您是否尝试过control1.Controls.AddAt(0,table1)?有点奇怪,他们没有像大多数其他集合类型那样调用Insert方法。如果您希望新控件(co

如何在asp.net中动态地将一个控件插入另一个控件之前。假设control1是网页上的某个控件,我想在control1之前动态创建并插入一个表

e、 g


但是接下来会发生什么呢?要作为子控件添加控件,我将执行以下操作:
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);
}