当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《ASP.NET-在RenderContent调用中将事件处理程序添加到Repeater内部的LinkBut​​ton》经验,为你挑选了1个好方法。

我有一个Sharepoint WebPart,可以加载自定义用户控件.用户控件包含一个Repeater,而Repeater又包含多个LinkBut​​tons.

在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.我可以看到它被添加为调试器中的事件处理程序.

有任何想法吗?我很难过如何做到这一点.



1> Mark Cidade..:

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

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

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

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

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有