ASP Repeater生成的Javascript数组未更新

Javascript Array generated by ASP Repeater not updated

本文关键字:数组 更新 Javascript Repeater ASP      更新时间:2023-09-26

我有一个中继器来用客户端javascript生成一个数组(用于谷歌地图标记)。它在第一次加载时工作良好,但当我触发一个post-back并将中继器与其他数据绑定时。中继器将把初始数组值返回给我的变量。有什么不对的地方吗?请帮助

<script type="text/javascript">
  Var markers = [];
    function LoadMarker() {
    markers = [];
    var data =[
    <asp:Repeater ID="rptMarkers" runat="server">
    <ItemTemplate>
                {
                "title": '<%# Eval("DeviceName") %>',
                "lat": '<%# Eval("Latitude") %>',
                "lng": '<%# Eval("Longitude") %>',
                "Origlat": '<%# Eval("OrigLatitude") %>',
                "Origlng": '<%# Eval("OrigLongitude") %>',
                "description": '<%# Eval("Description") %>',
                "Status": '<%# Eval("Status") %>',
                "Active": '<%# Eval("Active") %>'
            }
    </ItemTemplate>
    <SeparatorTemplate>
        ,
    </SeparatorTemplate>
    </asp:Repeater>];
    markers = data;
    }

中继器不适合我,但我找到了一个替代方案。使用JavaScriptSerializer从代码后面序列化数据集。然后将其解析为一个隐藏字段,以便客户端代码可以访问。

HTML

<asp:HiddenField ID="hfSortOrder" runat="server" />

JS-

var markers = [];
markers = JSON.parse(document.get`enter code here`ElementById('<%= hfDummy.ClientID%>').value);
for (i = 0; i < markers.length; i++) {
var data = markers[i]
//Do your stuff etc: var info = data.column1
}

VB.NET

    Dim dsdata As New DataSet
    Dim dt As New DataTable()
    Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer()
    Dim rows As New List(Of Dictionary(Of String, Object))()
    Dim row As Dictionary(Of String, Object)
dsdata = ReadData()            
For Each dr As DataRow In dt.Rows
row = New Dictionary(Of String, Object)()
   For Each col As DataColumn In dt.Columns
      row.Add(col.ColumnName, dr(col))
   Next
rows.Add(row)
Next
hfDummy.Value = serializer.Serialize(rows)