我正在构建一个快速的网络应用程序,以显示来自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数组是我的挑战
答案 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%>;