代码之家  ›  专栏  ›  技术社区  ›  Serhat Ozgel

如何动态创建MaskedEditexter?

  •  1
  • Serhat Ozgel  · 技术社区  · 16 年前

    我想从codebehind创建一些屏蔽的编辑扩展程序。类似:

    private MaskedEditExtender m_maskedEditExtender;
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        m_maskedEditExtender = new MaskedEditExtender()
        {
            BehaviorID = "clientName"
        };
        m_maskedEditExtender.Mask = "999999999";
        this.Controls.Add(m_maskedEditExtender);
    }
    protected override void Render(HtmlTextWriter writer)
    {
        m_maskedEditExtender.RenderControl(writer);
    }
    

    当我执行此操作时,在MaskedEditexter的OnLoad上会得到一个NullReferenceException。正确的方法是什么?请注意,将扩展器放入类似于中继器的控件并使用数据绑定对我来说不起作用。

    编辑: 我没有更新面板。结果我还需要在服务器端指定一个目标控件。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Jesse Millikan    16 年前

    ASP.NET Page Life Cycle Overview 如果它在页面子类中。如果向下滚动到事件列表,该页建议您使用preinit事件创建任何动态控件。有必要尽早这样做,以确保ASP.NET在正确的阶段清晰地加载viewstate,以及其他事情。

    但是,如果在Web用户控件或自定义控件中执行此操作,请重写CreateChildControls并在其中执行此操作。

    如果没有帮助,请发布一个更完整的代码示例。

        2
  •  1
  •   Aaron Powell    16 年前

    您的示例没有提供TargetControlID。

    页面上有更新面板吗?动态创建扩展器时遇到问题,因为它们没有添加到UpdatePanel内容中。

    我还认为您必须对scriptmanager(注册扩展程序)做些什么,但我可能弄错了(目前我没有访问动态扩展程序代码的权限)。

        3
  •  0
  •   Raghu    9 年前

    为MaskedEditExtender提供正确的TargetControlID值

    推荐文章