【问题标题】:UpdatePanel's PostbackTrigger that is inside a usercontrol inside a masterpage?UpdatePanel PostbackTrigger 在母版页内的用户控件内?
【发布时间】:2011-02-24 18:53:30
【问题描述】:

我有一个母版页,在该母版页里面是一个用户控件,它有一个带有保存按钮的工具栏。然后我有一个继承自母版页的 aspx 页面。在那个页面我有更新面板。是否可以将回发触发器设置为用户控件内的保存按钮?

【问题讨论】:

    标签: c# asp.net user-controls updatepanel master-pages


    【解决方案1】:

    您应该能够在内容页面中使用Master.FindControl("MySaveButton"),并将其附加到脚本管理器的触发器列表中:

    this.MyScriptManager.RegisterAsynchPostBackControl(Master.FindControl("MySaveButton"))
    

    除非我没有正确理解问题。

    【讨论】:

    • 我需要通过主机找到控制并进入用户控制,对吗?我猜它看起来像这样: Master.FindControl("UserControl").FindControl("TheButton")
    【解决方案2】:

    检查第四个帖子(标记为答案)here,它应该会有所帮助。

    简而言之,创建一个PostBackTrigger 实例,适当设置字段,然后添加到UpdatePanelTriggers 集合中。

    例如(来自链接网站):

    //Creates a new async trigger
    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
    
    //Sets the control that will trigger a post-back on the UpdatePanel
    trigger.ControlID = "btnCommit";
    
    //Sets the event name of the control
    trigger.EventName = "Click";
    
    //Adds the trigger to the UpdatePanels' triggers collection
    pnlMain.Triggers.Add(trigger);
    

    【讨论】:

    • 我喜欢这个,但是这段代码去哪里了?就像我说的那样,我有一个母版页,并且该母版页中有一个工具栏用户控件。该按钮位于该用户控件内。当我基于我的主页面并在该页面上放置一个更新面板时,我是否将 ControlID 设置为用户控件中按钮的 ID?
    【解决方案3】:

    我采用了不同的方法来查找我的控件。我使用了this 方法。我过去用过这个,不知道为什么我没有早点考虑过。在我的用户控件中,我将控件公开为属性。在我的母版页中,我创建了一个允许我获取用户控件实例的属性。在我的页面中,我可以称之为:Master.UserControlName.PropertyInControl

    因此,如果我在用户控件中公开一个按钮或控件,我应该能够将其添加到触发器集合中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多