【问题标题】:AJAX Partial page update problem when displaying a control显示控件时AJAX部分页面更新问题
【发布时间】:2010-03-08 04:11:29
【问题描述】:

在带有脚本管理器和更新面板的 asp.net 中使用部分页面更新时,我遇到了一个有趣的问题。

我的场景如下所示:我正在使用 ajax 工具包中的选项卡控件。我还使用延迟加载实现了这个控件,因此当页面加载时,只有当前选项卡被加载,所有其他选项卡都不会被渲染,因为我在每个选项卡上使用了 UpdatePanel(在 .ascx 控件上)和当一个选项卡被选中时,更新面板会进行异步回发以加载所选选项卡的内容。

在我的一个选项卡上,我使用来自 obout.com 的组合框控件,但它不起作用。 现在我知道为什么它不起作用了。它不起作用,因为控件是通过部分页面刷新显示的,但要正确显示控件,它必须做一些“魔术”,即在页面上注册一些 .css 和 .js 包含(我猜在头部)....但是因为我通过异步页面刷新加载了这个控件...它不能做这些事情。

您建议哪种工作方式? 谢谢!

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    假设您之前在 asp.net 中完成了部分 ajax 更新,那么您只需要在 ScriptManager 中注册一个客户端块,以了解何时触发部分更新。

    在不了解您的问题空间的情况下,很难为您粘贴特定代码,因此我建议您阅读此内容,然后在遇到问题时提出更多问题...

    http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerclientscriptblock.aspx

    顺便说一句,如果您是动态地创建控件并部分更新它们,那么您还需要非常小心您的视图状态。这是一罐蠕虫,所以希望您不会也不必担心。

    【讨论】:

    • hmmm 好的...但是我不知道要注册什么或如何注册...我只知道控件不起作用,因为缺少此客户端块:var tempStyleSheet= document.createElement('link');tempStyleSheet.rel='stylesheet'; tempStyleSheet.type='text/css';tempStyleSheet.href="/WebResource.axd?d=WN8o_1mSR3c5ZcycIrIgY5X-rne-Lk2UnnW9O4PYJHhL e1cEIZ9xqlugWWi_RGrXl48ODBlfTSGKV_ONmlt3Ps7iyLa9n9SaSfKx3605Za841&t160363605Za841&t=10 document.getElementsByTagName('head')[0].appendChild(tempStyleSheet);我只是将它复制到字符串参数中吗?
    • 好的,我注册了这个资源,并且控件看起来像......但不是功能,可能我还需要包含一个 .js 文件,但我不知道在哪里可以找到这个文件?
    • 您是否设法在没有更新面板和 ajax 控件的情况下使这个特殊控件正常工作?
    • 是的...没有更新面板也可以正常工作...我已经向他们的开发团队发送了一个示例,所以我们会看到 :)
    • 如果在初始 GET 请求中将 visible 设置为 false,您似乎无法在异步部分刷新回发中将控件的 visible 属性设置为 true。我只是在谈论需要包含一些 .css 或 .js 资源的控件。我用 devex ajax 组合框尝试了同样的事情,结果是一样的......所以回到绘图板和 asp.net ajax 书籍:)
    【解决方案2】:

    我怀疑您必须手动注册 ajax 控件所需的脚本才能以这种方式工作。 例如这里是 Telerik 控件的解决方案: http://www.telerik.com/help/aspnet-ajax/troubleshooting.html

    这是使用 devexpress 控件的解决方案: protected void Page_Load(object sender, EventArgs e) { DevExpress.Web.ASPxClasses.ASPxWebControl.RegisterBaseScript(this); }

    我没有找到 obout.com 控件的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多