2015-02-05 11 views
1

클라이언트 쪽 JavaScript에서 배열을 생성하는 리피터가 있습니다 (Google지도 마커 용). 첫 번째로드에서는 잘 작동하지만 포스트를 트리거하고 다른 데이터로 리피터를 바인드 할 때 작동합니다. repeater는 초기 배열 값을 my 변수로 리턴합니다. 어떤 방법으로 잘못 가고 있습니까?자바 스크립트 배열에 의해 생성 된 ASP Repeater가 업데이트되지 않았습니다.

<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; 
 

 
    }

답변

0

리피터 나를 위해 작동하지 않습니다 도움이되지만 나는 대안을 발견하시기 바랍니다. 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) 
관련 문제