2013-07-11 130 views
2

我有一个LinkButton动态创建Load,然后将其添加到驻留在Master页面的控件。下面是用于创建LinkButton原代码:点击事件不会触发动态添加LinkBut​​ton

LockUnlock = new LinkButton() { ID = "LockUnlock", Visible = false }; 
LockUnlock.Click += LockUnlock_Click; 

现在,当我第一次挖成这个问题我是这么认为的,我搬到了代码的override OnInit它可能与ASP.NET生命周期,但这并没有解决它。

然后我开始设置ID,因为这还没有完成。所以我说这行:

LockUnlock.ID = "LockUnlock"; 

,我试图在这两个OnInitLoad - 没有运气。

后来我想,因为我加入这实际上是一个ContentPlaceHolder我可能需要使ID静以得到这个工作的一部分,自定义控制,所以我加了这一点:

LockUnlock.ClientIDMode = ClientIDMode.Static; 

我只在Load中试过,但没有运气,说实话如果它不在Load中工作,它几乎肯定不会改变OnInit中的任何内容 - 这只是我的第一步,并且在很多方面真的让玛丽赞不绝口。

好了,所以现在我的地步,我觉得它关系到一个事实,即ResourceCenter是添加到ContentPlaceHolder,因此事件的自定义控制,虽然它是技术上勾搭上了,能不会因为class的背景而被解雇。但我不确定该从哪里出发。

我是否需要为点击添加共享类?我是否需要连接自定义控件中的点击,然后从那里委托它?

我会喜欢为使用这些解决方案,但嘿,我们做我们必须做的!我期待着大家对此的意见。

编辑

,增加了控制的ResourceCenter的代码如下所示:

this.ResourceCenter.AddAdminLink(LockUnlock.Visible ? LockUnlock : null); 

ResourceCenter控制,增加了其列表中的代码看起来是这样的:

if (link == null) { return; } 

var wrapper = new HtmlGenericControl("li"); 
wrapper.Controls.Add(link); 

this.AdminLinkList.Controls.Add(wrapper); 

其中link是通过上述行传递给方法的内容。

+0

您可以共享将控件添加到页面的代码吗? – Andrei

+0

@Andrei,请参阅我的编辑。 –

+0

您正在添加哪个page_load事件控制母版页或内容页? –

回答

2

它必须在init中。另外,尝试在添加事件之前将控件添加到控件集合中,如下所示:

LockUnlock = new LinkButton() { ID = "LockUnlock", Visible = false }; 
Panel.Controls.Add(LockUnlock); 
LockUnlock.Click += LockUnlock_Click; 
相关问题