加载页面执行期间添加的动态自定义用户控件(按钮单击事件)

时间:2014-06-09 18:11:13

标签: asp.net user-controls

我尝试在按钮点击事件期间向面板添加自定义控件(包含"表单"输入数据),并且我想要访问它的方法,例如。输入此数据后验证()。但是当我尝试这样做时,ctrl带有空值。

这是我的代码的一部分:

protected void btnNext2_Click(object sender, EventArgs e)
{
 ...
ctrlCompliance = (Compliance)LoadControl("../../ascx/SRM/Compliance.ascx");
ctrlCompliance.ReadOnly = false;
pnlCompliance.Controls.Add(ctrlCompliance);
...
}

protected void btnNext3_Click(object sender, EventArgs e)
{
 ...
ctrlCompliance = pnlCompliance.Controls[0] as Compliance;
ctrlCompliance.Validate() <- this is allways null
...
}

我不能像大多数解决方案那样使用Page_Init,只需在按钮点击期间加载它。有人和我有同样的问题吗?

1 个答案:

答案 0 :(得分:0)

您应该使用Page_Init加载它,但将其visible属性设置为False。然后使用javascript或代码隐藏,当您需要显示打印按钮时,可以将其visible属性更改为True。

所以搬家:

ctrlCompliance = (Compliance)LoadControl("../../ascx/SRM/Compliance.ascx");
ctrlCompliance.ReadOnly = false;
pnlCompliance.Controls.Add(ctrlCompliance);

到Page_Init