【问题标题】:ASP.NET UpdatePanel: how to get client script to run on every refreshASP.NET UpdatePanel:如何让客户端脚本在每次刷新时运行
【发布时间】:2011-10-30 19:07:43
【问题描述】:

我有一个自制的工具栏控件,它在多个地方使用,无论是在 UpdatePanel 中还是在一个地方之外。它依赖于一些 jQuery 来设置它的按钮。它在其程序集中嵌入了自己的启动脚本。

当工具栏位于更新面板中时,我遇到的问题是让启动脚本在正确的时间运行。由于它是在更新面板标记的隐藏面板中声明的,因此在创建更新面板时会创建并加载它。但它实际上并没有被渲染,直到用户完成了一些事情并且隐藏的面板变得可见。

我希望每次更新面板刷新时都运行启动脚本。 (理想情况下,我希望它只在工具栏可见的情况下才这样做,但如果必须的话,我会进行“每次刷新”。)但我希望工具栏在更新面板之外仍能正常工作,只要它需要要做的是挂钩到文档的 .ready() 处理程序。

鉴于工具栏无法从服务器端判断(据我所知)它是否在更新面板内,但它负责确保必要的 javascript,我该如何做到这一点?

谢谢。

ETA:我在this question 的答案中找到了答案。这适用于我的工具栏,无论它是在更新面板中还是在更新面板之外。谢谢大家!

【问题讨论】:

  • 不确定这是否有帮助,但我认为您可以使用 ScriptManager.GetCurrent ( Page ).IsInAsyncPostBack 方法在服务器端判断您的更新面板是否导致回发。这对你有用吗?
  • @JasonTuran 嗯。也许吧,但从它的声音来看,它只会告诉我一个更新面板已经回传,而不是那个回传的面板是否是我控制的祖先。为此,我想我必须爬上 .Parent 属性的层次结构。不过谢谢!

标签: jquery asp.net updatepanel


【解决方案1】:

如果我错了,请纠正我,但我认为每次更新 updatepanel 时都应该执行 UpdatePanel 中的 jQuery 工具栏。所以也许在服务器端你可以判断它是否是异步回发。如果是,那么您可以在将执行的更新面板中使用编写一些 javascript。您可以使用加载到更新面板中的占位符中的文字控件。比如……

public void WebForm1_OnLoad(Object sender, EventArgs args){


    if(ScriptManager.GetCurrent(Page).IsInAsyncPostBack){
        var con = new LiteralControl("INSERT javascript here that would call jquery method");
        this.placeHolder.Controls.Add(con);
    }
}

【讨论】:

  • 我发现另一个问题的答案解决了我的问题。不过谢谢你的回复!我感谢你回答这个问题。谢谢!
  • Ann:如果您发布了调查结果的链接,将会对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2011-03-16
  • 1970-01-01
相关资源
最近更新 更多