2

我有一个LinkButton动态创建的Load,然后添加到Master页面上的控件中。这是用于创建的原始代码LinkButton

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

现在,当我第一次研究这个问题时,我认为它可能与 ASP.NET 生命周期有关,所以我将代码移到了override OnInit.,但这并没有解决它。

然后我继续设置,ID因为那还没有完成。所以我添加了这一行:

LockUnlock.ID = "LockUnlock";

我都试过了OnInit-Load没有运气。

然后我想,因为我将它添加到一个自定义控件中,它实际上是 a 的一部分,ContentPlaceHolder我可能需要制作ID静态来让它工作,所以我添加了这个:

LockUnlock.ClientIDMode = ClientIDMode.Static;

我只在 中尝试过Load,但没有运气,老实说,如果它不起作用,Load它几乎肯定不会改变任何东西OnInit- 这只是我的第一步,在很多方面真的是一个冰雹玛丽。

好的,所以现在我觉得它与ResourceCenter添加到 a 的自定义控件这一事实有关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);

wherelink是上述行传递给方法的内容。

4

1 回答 1

2

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

LockUnlock = new LinkButton() { ID = "LockUnlock", Visible = false };
Panel.Controls.Add(LockUnlock);
LockUnlock.Click += LockUnlock_Click;
于 2013-07-11T13:55:54.987 回答