2014-08-30 35 views
0

我正在構建一個快速的Web應用程序,以便在來自sql server數據庫的谷歌地圖上顯示位置標記。在我的aspx頁面上,我有一箇中繼器控件,用於顯示數據庫中位置的經緯度。將asp.net轉發器項目傳遞給javascript數組

<asp:Repeater runat="server" ID="rptMarkers"> 
    <ItemTemplate> 
     title: '<%# Eval("LocationName")%>'<br /> 
     lat : '<%# Eval("Latitude") %>' <br /> 
     long : '<%# Eval("Longitude") %> 
    </ItemTemplate> 

    <SeparatorTemplate> 
     , 
    </SeparatorTemplate> 
</asp:Repeater> 

現在我需要的,如何通過返回兩個 '<%# Eval("Latitude")%>'<%# Eval("Latitude") %>值成JavaScript數組指導。這樣我就可以使用javascript數組中的值來構建地圖標記。我知道如何在google map中顯示標記,當我獲得javascript lat long數組時。只使用中繼器的值來構建javascript數組是我的挑戰

回答

0

我只是修改您的代碼。 採取數據標籤控制,這樣

long : <asp:Label ID="lblLongitude" runat="server" Text='<%#Eval("Longitude") %>'></asp:Label><br /> 

lat : <asp:Label ID="lblLatitude" runat="server" Text='<%#Eval("Latitude") %>'></asp:Label><br /> 

然後得到的所有數據的js

$(document).ready(function() { 
      var Longitude= []; 
      var Latitude= []; 
      $('*[id^=rptMarkers_lblLongitude]').each(function() { 
       Longitude.push($(this).html()); 
      }); 

      $('*[id^=rptMarkers_lblLatitude]').each(function() { 
       Latitude.push($(this).html()); 
      }); 

     }); 
+0

-1使用標籤控件。 -1來推送到單獨的數組中,當將這對值推入單個數組中時是有意義的。 – 2014-08-31 00:17:51

0

你怎麼綁定數據中繼?我想你有某種數據源。試試這個:

<script type="text\javascript"> 
var location = []; 
<% foreach(var elm in dataSource) %> 
<%{ Response.Write("location.push({'lat': " + elm.Latitude + " , 'long': " + elm.Longitude + "});"); }%>  

如果你必須使用一箇中繼器,改變這樣的代碼:

<script type="text\javascript"> 
    var location = []; 
</script> 
<asp:Repeater runat="server" ID="rptMarkers"> 
<ItemTemplate> 
    title: '<%# Eval("LocationName")%>'<br /> 
    lat : '<%# Eval("Latitude") %>' <br /> 
    long : '<%# Eval("Longitude") %>' 
<script type="text\javascript"> 
    location.push({'lat': '<%# Eval("Latitude") %>', 'long': '<%# Eval("Longitude") %>'}); 
</script> 
</ItemTemplate> 

<SeparatorTemplate> 
    , 
</SeparatorTemplate> 

-1

不要使用中繼器。創建一個匿名的值數組,然後使用JavaScriptSerializer創建數組。

說您的數據集被稱爲data &包含具有上述屬性的對象。

var j = new JavaScriptSeializer() 
var result = j.Serialize(data.Select(i=>new { title=i.LocationName, lat=i.Latitude, lon=i.Longitude })); 
在你的JavaScript代碼塊

然後

var location = <%=result%>; 

更妙的是使用JSON.Net串行器(sitenuget),但可能是矯枉過正的一個小功能