ASP.NET异步后回asp:按钮点击

问题描述:

我在asp:net中使用AJAX,并试图处理一个asp:按钮同时触发javascript方法和codebehind c#方法的情况。为此,我使用按钮的onclick和onClientClick属性。我需要回调发生的代码隐藏被调用,但是这个回发导致JavaScript不工作,因为变量已经失去了状态。任何人都可以描述如何处理这个?可能与ajax和异步回发?它开始让我有点疯狂!ASP.NET异步后回asp:按钮点击

编辑: JavaScript实际上是一个谷歌地图(V3),C#代码是提交给一个SQL数据库。

地图是在初始化代码隐藏有:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) { 
      ScriptManager.RegisterStartupScript(this, this.GetType(), "onload", "initialize_map();", true); 
      submitButton.Command += new CommandEventHandler(this.submitButton_Click); 
     } 
    } 

下面是一些相关的代码:

<asp:UpdatePanel runat="server" ID="Form" UpdateMode="Conditional"> 
<ContentTemplate> 

(...form stuff...) 

<asp:Button ID="submitButton" runat="server" Text="Submit" ValidationGroup="NewCallFormSubmit" OnClientClick="calcRoute(); return false;" onclick="submitButton_Click" /> 

</ContentTemplate> 
</UpdatePanel> 

<asp:UpdatePanel runat="server" ID="DisplayUpdatePanel" UpdateMode="Conditional"> 
<ContentTemplate> 

<h1> 
    Pick-Up and Drop-Off Locations 
    </h1> 
    <!-- Map Layout --> 
    <div id="map_canvas" style="width: 500px; height: 500px;"></div>       

</ContentTemplate> 
</asp:UpdatePanel> 

......我想如果我能得到它的工作第一个updatepanel在按钮单击后回发,第二个面板不回发,并且该按钮仍然调用代码隐藏。到目前为止,这一切都没有在同一时间发生。

+0

您是否只想在OnClick(服务器)代码之前运行OnClientClick(客户端)代码? – Brissles 2012-01-16 00:46:37

+0

你尝试过使用(IsPostBack)或(!IsPostBack) – 2012-01-16 00:47:16

+0

把你的代码样本 – 2012-01-16 00:48:42

如果您只是想你的OnClick(服务器)代码之前运行的OnClientClick(客户端)的代码,请尝试以下操作:

ASP.NET

<asp:Button ID="btn_mybutton" runat="server" Text="MyButton" OnClientClick="return JSFunction();" OnClick="CFunction"/> 

的Javascript

<script type="text/javascript"> 
    function JSFunction() { 
     alert('Some JavaScript stuff'); 
     return true; 
    } 
</script> 

C#

protected void CFunction(object sender, EventArgs e) 
{ 
    // Some server code 
} 

JavaScript函数首先执行并从执行服务器代码之前返回。

+1

嘿,其实我只是想通过调用codebehind来调用,这样数据就被提交给数据库,但不会在此过程中破坏JavaScript谷歌地图。我想我的更新小组正在工作,我仍然有一个“回报错误”;添加到我的onclientclick从另一个修复尝试。您的回复虽然引起了我的注意,但它是您的绿色复选标记!谢谢你们! – SHeinema 2012-01-16 01:04:43