gpt4 book ai didi

c# - ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

转载 作者:太空狗 更新时间:2023-10-30 00:13:34 26 4
gpt4 key购买 nike

我有一个加载自定义用户控件的 Sharepoint WebPart。用户控件包含一个 Repeater,而 Repeater 又包含多个 LinkBut​​ton。

在 Webpart 的 RenderContent 调用中,我有一些代码来添加事件处理程序:

        ArrayList nextPages = new ArrayList();
//populate nextPages ....
AfterPageRepeater.DataSource = nextPages;
AfterPageRepeater.DataBind();

foreach (Control oRepeaterControl in AfterPageRepeater.Controls)
{
if (oRepeaterControl is RepeaterItem)
{
if (oRepeaterControl.HasControls())
{
foreach (Control oControl in oRepeaterControl.Controls)
{
if (oControl is LinkButton)
{
((LinkButton)oControl).Click += new EventHandler(PageNavigateButton_Click);
}
}
}
}
}

然而,函数 PageNavigateButton_Click 从未被调用过。但是,我可以看到它被添加为调试器中的事件处理程序。

有什么想法吗?我很难过如何做到这一点。

最佳答案

在调用 RenderContent() 时,框架已调用所有已注册的事件处理程序。您需要在较早的方法中添加事件处理程序,例如 OnLoad():

protected override void OnLoad(EventArge e)
{ base.OnLoad(e);
EnsureChildControls();

var linkButtons = from c in AfterPageRepeater.Controls
.OfType<RepeaterItem>()
where c.HasControls()
select c into ris
from lb in ris.OfType<LinkButton>()
select lb;

foreach(var linkButton in linkButtons)
{ linkButton.Click += PageNavigateButton_Click
}
}

关于c# - ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/122821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com