首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义Web用户控件的事件上的服务器控件在动态添加到页面时不会触发

自定义Web用户控件的事件上的服务器控件在动态添加到页面时不会触发
EN

Stack Overflow用户
提问于 2011-10-07 01:38:40
回答 1查看 337关注 0票数 0

在ASPX页面上动态添加web用户控件时,我遇到了一个小问题,我已经阅读了页面生命周期,并看到了一些建议,建议在页面生命周期中尽早添加动态控件。到目前为止,控件是在PreInit事件上创建的,如下代码块所示:

代码语言:javascript
复制
    protected override void OnPreInit(EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            lstQuestions = new List<ucQuestion>();
            Session["listQuestionss"] = lstQuestions;
            ucQuestion q = null;
            for (int i = 0; i < MIN_QUESTIONS; i++)
            {
                q = LoadControl("~/UserControls/Exam/ucQuestion.ascx") as ucQuestion;
                q.ID = String.Format("Question{0}", listQuestions.Count + 1);
                listQuestions.Add(q);
            }
        }
        else
        {
            if (Session["listQuestions"] != null)
            {
                listQuestions = Session["listQuestions"] as List<lstQuestions>;
            }
            else
            {
                Response.Redirect("~/Views/HR/Exams/AddExam.aspx");
            }
        }
        base.OnPreInit(e);
    }

然后onInit我有了以下内容:

代码语言:javascript
复制
    protected override void OnInit(EventArgs e)
    {
        foreach (ucQuestion q in lstQuestions)
        {
            divQuestions.Controls.Add(q);
        }
        base.OnInit(e);
    }

ucQuestion用户控件有几个标签、一些文本框和一个带有按钮的FileUpload,当我按下按钮时,页面会被回发,但我代码中的断点永远不会命中,简而言之,我需要知道在添加控件时是否做错了什么,该控件没有将控件绑定到适当的事件。如果我静态地添加用户控件,事件可以正常工作,只是用户可以向考试中添加他认为合适的任意数量的问题,所以我必须动态添加它们。

EN

回答 1

Stack Overflow用户

发布于 2011-10-07 02:48:11

您需要在页面生命周期的早期添加控件,例如OnInit。此外,请确保每次回发页面时都为控件分配相同的ID。

另一个选择是使用DynamicControlsPlaceHolder,它将自动管理动态控件的持久性,而不需要任何额外的代码:

http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7678290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档