C# 异步回发不工作

C# 异步回发不工作,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我在我的内容占位符中使用了这个量表 MyControl.ascx: <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" sr

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

MyControl.ascx:

<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>

<div id="<%=this.ClientID%>_ctl" class="jgauge" ></div>

<script type="text/javascript">
    $(document).ready(function () {
    var isPostBack = <%= Page.IsPostBack ? "true" : "false" %>;
        if(isPostBack == "true")
        {
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
            prm.add_endRequest(onEndRequest);
        }
        else{
                var <%=this.ClientID%>_ctl;

                <%=this.ClientID%>_ctl = new jGauge(); 
                <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl';
                <%=this.ClientID%>_ctl.init(); 
 }
    });

    function EndRequestHandler(sender, args){  
        var <%=this.ClientID%>_ctl;
        <%=this.ClientID%>_ctl = new jGauge(); 
        <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl';
        <%=this.ClientID%>_ctl.init();
}
</script>

$(文档).ready(函数(){
var isPostBack=;
如果(isPostBack==“true”)
{
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
prm.add_endRequest(onEndRequest);
}
否则{
var_-ctl;
_ctl=新的jGauge();
_ctl.id='_ctl';
_ctl.init();
}
});
函数EndRequestHandler(发送方,参数){
var_-ctl;
_ctl=新的jGauge();
_ctl.id='_ctl';
_ctl.init();
}
在MyPage.aspx中:(包含动态创建的具有多个此类控件的表。将生成的表放在占位符上)


母版页上有脚本管理器:

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


但在异步回发(点击“myBtn”)之后,gauge消失了。请帮忙。从几天开始就在努力解决这个问题

我通过以下方式解决了这个问题:

$(document).ready(function () { 
    Sys.WebForms.PageRequestManager.getInstance()
        .add_endRequest(<%=this.ClientID%>_ctlEndRequestHandler); 
    var <%=this.ClientID%>_ctl; 

    <%=this.ClientID%>_ctl = new jGauge();  
    <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl'; 
    <%=this.ClientID%>_ctl.init();
});

function <%=this.ClientID%>_ctlEndRequestHandler(sender, args){
    var <%=this.ClientID%>_ctl; 
    <%=this.ClientID%>_ctl = new jGauge();  
    <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl'; 
    <%=this.ClientID%>_ctl.init(); 
}
$(文档).ready(函数(){
Sys.WebForms.PageRequestManager.getInstance()
.add_endRequest(_ctlEndRequestHandler);
var_-ctl;
_ctl=新的jGauge();
_ctl.id='_ctl';
_ctl.init();
});
函数_ctlEndRequestHandler(发送方,参数){
var_-ctl;
_ctl=新的jGauge();
_ctl.id='_ctl';
_ctl.init();
}
唯一真正的区别是回发检查不再进行。您的潜在问题是,
$(document).ready
不会在部分回发时触发,这意味着
isPostBack
永远不会真正设置为true。因此,
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler)从未执行过,这意味着您的
EndRequestHandler
从未运行过

编辑

另一个问题是,如果同时有多个控件,那么命名方法
EndRequestHandler
肯定会导致问题。为了解决这个问题,我在
EndRequestHandler
的名称中添加了
\u ctl
,以确保它是唯一的

更多信息:


你试过调试js代码吗?我在firebug中注意到,页面上只存在一个外部div,它保存着这个量表。仪表的内部内容未呈现。我是否应保持EndRequestHandler函数不变?对不起,是的,应该保持不变。将编辑我的答案以进行更新。感谢您的帮助。我试过了。但我在firebug中注意到,页面上只显示了容纳仪表的外部div。仪表的内部内容不呈现。您所说的内部内容是什么意思?比如它有画布、针等等。它被渲染为:仅。
$(document).ready(function () { 
    Sys.WebForms.PageRequestManager.getInstance()
        .add_endRequest(<%=this.ClientID%>_ctlEndRequestHandler); 
    var <%=this.ClientID%>_ctl; 

    <%=this.ClientID%>_ctl = new jGauge();  
    <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl'; 
    <%=this.ClientID%>_ctl.init();
});

function <%=this.ClientID%>_ctlEndRequestHandler(sender, args){
    var <%=this.ClientID%>_ctl; 
    <%=this.ClientID%>_ctl = new jGauge();  
    <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl'; 
    <%=this.ClientID%>_ctl.init(); 
}