将asp.net转发器项目传递给javascript数组

时间:2014-08-30 19:38:57

标签: c# javascript asp.net google-maps

我正在构建一个快速的网络应用程序,以显示来自sql server数据库的谷歌地图上的位置标记。在我的aspx页面上,我有一个转发器控件,显示数据库中lat的多个位置。

 <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数组中的值来构建地图标记。当我得到javascript lat long数组时,我知道如何在谷歌地图中显示标记。只使用转发器中的值来构建javascript数组是我的挑战

3 个答案:

答案 0 :(得分: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());
            });

        });

答案 1 :(得分: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>

答案 2 :(得分:-1)

不要使用转发器。创建一个匿名的值数组,然后使用JavaScriptSerializer创建数组。

说您的数据集名为data&amp;包含具有您在上面使用过的属性的对象。

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),但对于一个小函数来说可能有点过分