【问题标题】:Issue with rendering control on Async postback异步回发的渲染控制问题
【发布时间】:2012-10-18 18:25:04
【问题描述】:

我在我的内容占位符中使用了这个量规。

http://www.dariancabot.com/projects/jgauge_wip/

脚本:

<link rel="stylesheet" href="Scripts/jgauge.css" type="text/css" />
<script type="text/javascript" src="Scripts/jquery-1.8.0.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/jgauge-0.3.0.a3.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/jQueryRotate.2.2.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/excanvas.min.js"></script>
<script type="text/javascript">
    var demoGauge1 = new jGauge(); // Create a new jGauge.
    demoGauge1.id = 'jGaugeDemo1'; // Link the new jGauge to the placeholder DIV.
    $(document).ready(function () {
        demoGauge1.init(); // Put the jGauge on the page by initializing it.
    });
</script>

标记:

<asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
        <div id="jGaugeDemo1" class="jgauge"></div>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="myBtn" />
    </Triggers>
</asp:UpdatePanel>
<asp:Button ID="myBtn" runat="server" Text="Refresh" /> 

我在母版页上有脚本管理器:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager>

但是在异步回发(点击“myBtn”)之后,仪表消失了。帮助。

【问题讨论】:

  • 在异步回发时,更新面板中的全部内容都会重新创建 - 您的 demoGauge1 不再引用相同的 jGuageDemo1 div。

标签: c# javascript asp.net ajax


【解决方案1】:

由于更新面板中的 html 元素会在每次异步回发时重新创建,因此您需要在每次请求时重新生成仪表。

我没有使用仪表控制的经验,但这样的东西可以解决问题

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(onEndRequest);

function onEndRequest(sender, args){    
   demoGauge1.init();       
}

【讨论】:

  • 很抱歉再次打扰您。但是我能够在异步回发时再次重新创建仪表,但它的内部值没有显示。我看到萤火虫,页面上有值。但没有得到渲染。所以我对此一无所知。
  • 恐怕在不了解控件的情况下不能说太多。您可以尝试查看控制代码以查看问题所在。也许您需要创建一个不同的仪表而不是使用您已有的仪表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2021-05-11
  • 2016-02-12
  • 1970-01-01
  • 2023-03-29
  • 2016-10-06
  • 2019-02-15
相关资源
最近更新 更多