作为实验,我正在用c# asp.net编写一个复合控件,希望复合控件的所有实例都能与一个外部控件交互。这个是可能的吗?
我尝试过的东西:
选项1:从控件内部检查页面上是否存在外部控件,如果没有则添加
选项2:在设计时将目标控件的id传递给复合控件,然后使用this.Page.FindControl()
显然,它是一厢情愿的想法,它将是如此简单:)
如果我尝试在CreateChildControls方法中执行此操作,this.Page.FindControl(目标控件)总是返回null。如果我试图从这个方法中将控件添加到页面,它会抛出一个异常:
在DataBind、Init、Load、PreRender或Unload阶段不能修改控件集合。
有没有其他方法/事件可以实现这一点?
发布于 2012-02-26 23:51:28
通过实现INamingContainer接口,可以在同一个网页窗体上创建多个实例。这基本上有助于防止同一名称空间中的id冲突。
如果要访问另一个控件,请在该控件上设置一个属性,以公开要公开的数据。
Build Composite Controls
发布于 2012-02-27 00:16:34
为什么不在复合控件上公开一个公共属性,说明它们的输出是什么,然后在呈现面板内容时,递归遍历页面,找到复合控件的所有实例,抓取文本,并将其添加到面板中?
https://stackoverflow.com/questions/9454279
复制相似问题