2012-09-10 60 views
0

我正在使用Google地圖apiv3的網站上工作。我在更新面板中有一個按鈕,通過它我可以使用button_click和javascript函數背後的代碼執行一些邏輯。無法獲取更新面板的工作權限

由於按鈕位於更新面板中,因此我無法在螢幕窗口的觀察窗口中看到任何內容,也無法在JavaScript函數中使用我的斷點。沒有更新面板,我可以在手錶中看到執行流程,一切正常,但我在地圖上重新加載。

代碼在ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:Button ID="Button1" runat="server" style="z-index: 1; left: 573px; top: 146px; position: absolute" Text="Show route" onclick="Button1_Click1"/> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click"/> 
     </Triggers> 
    </asp:UpdatePanel> 

Button_Click1:

protected void Button1_Click1(object sender, EventArgs e) 
{ 
    using (con = new MySqlConnection("server=localhost; uid=root;password=as64ws;database=Gmaps")) 
    da = new MySqlDataAdapter("select * from routes where uid='a1'", con); 
    da.Fill(ds, "mroute"); 
    foreach (DataRow r in ds.Tables[0].Rows) 
    { 
     uroute.Add(r["latlng"].ToString()); 
    } 
    croute = new string[uroute.Count]; 
    croute = uroute.ToArray(); 
    hdncroute.Value = string.Join("&", croute); 
    ScriptManager.RegisterClientScriptBlock(this, typeof(Button), "routes", "droute()", true); 
} 

的Javascript:

function droute() 
{ 
    var route=[]; 
    var temp; 
    temp = document.getElementById('<%= hdncroute.ClientID %>').value; 
    route= temp.split('&'); 
    //Loop to add locations and draw line 
    var path= polyline.getPath(); 
    for(var i=0;i<route.length;i++) 
     { 
      var input= route[i]; 
      var ltln = input.split(",",2); 
      var lat=parseFloat(ltln[0]); 
      var lng=parseFloat(ltln[1]); 
      var pos= new google.maps.LatLng(lat,lng); 
      var marker= new google.maps.Marker({position:pos,map:map}); 
      path.push(route[i]); 
      google.maps.event.addListener(marker,'click',showiwindow); 
     } 
    function showiwindow(event) 
    { 
    iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng()); 
    iwindow.open(map,this); 
    } 
} 

我不能得到要在地圖上顯示的值。 我應該將更新面板中的按鈕還是更新面板中的地圖?我哪裏錯了?

+0

此問題與Google地圖無關。 – Marcelo

+0

與這個問題相關的大多數答案都將類似於使用更新面板,因爲他們的問題不是要重新裝入表單數據的其餘部分。但在我的情況下,我應該避免地圖本身重新加載,因爲我丟失了它的數據。聽起來合理嗎? – Cdeez

+0

你爲什麼使用ASP/Mysql? PHP/Mysql更適用於許多使用Ajax或JQuery的Map示例 –

回答

1

我會報廢你的邏輯的很大一部分。

我會按鈕點擊做一個jQuery的ajax發佈到您的代碼隱藏的web服務,這將返回一個數組回到你的ajax文章,然後在你的ajax文章的成功部分,我會觸發你的JavaScript例程。

http://dotnetguts.blogspot.com/2012/01/jquery-ajax-examples-by-calling-aspnet.html

什麼上述我是怎麼做我幾乎我所有的谷歌地圖調用.......我還沒有看到在接近這樣做是爲了頁面100S的一個更合適的方法我已閱讀了這個主題。請讓我知道,如果你需要更多地瞭解如何這樣做。

這裏是另一個很好的頁面,描述如何做jquery ajax post。 :

Call code behind method from Jquery

0

Set UpdateMode =「Conditional」並將按鈕設置爲AsynPostBacktrigger。可能會解決問題。