Поместите переменную на стороне сервера в цикл javascript - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть переменная на стороне сервера с помощью следующего кода

 Dim mgps As New Text.StringBuilder
    Public ReadOnly Property GPS() As String
        Get
            Return mgps.ToString
        End Get
    End Property
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim con As New OleDbConnection
        con = New OleDbConnection("Data Source=sml; User ID=sml; Password=sml; provider=OraOLEDB.Oracle")
        con.Open()
        Dim cmd As OleDbCommand = New OleDbCommand("Select STA_NAME, GPS_ONE from GPS", con)

        Dim ds As New DataSet
        Dim I As Long
        Dim da As New OleDbDataAdapter(cmd)
        da.Fill(ds, "GPS")

        mgps.AppendLine("[")
        For I = 0 To ds.Tables("GPS").Rows.Count - 1
            mgps.AppendLine(ds.Tables("GPS").Rows(I).Item("GPS_ONE") & ",")
        Next I
        mgps.AppendLine("];")
    End Sub

Переменная глобальная с именем GPS

Теперь я пытаюсь получить доступ к нему на стороне клиента JS Array. Массив JS ниже

 var store_locations = new Array();
    store_locations = [ 
       new google.maps.LatLng(31.204549793299,72.264183974237),
        new google.maps.LatLng(31.23004996385,72.282225091978),
        new google.maps.LatLng(31.148218,72.224542),
        new google.maps.LatLng(31.2330555556,72.3330555556)
        ];

Теперь я хочу использовать переменные значения GPS вместо привычных значений в store_locations.

Как это можно сделать, пожалуйста, помогите мне.

Вот мой цикл, в котором я хочу получить доступ к значениям массива.

 for(i=0; i<store_locations .length-1; i++)
    {

          var image = 'ico/no.png';
          markers[i] = new google.maps.Marker(
          { 
           position: store_locations [i],
           map: map,
           draggable:true,
           icon:image,
           title: (i+1) + GPS
           });                             
    }    

У меня есть доступ к переменной GPS, как показано ниже

var GPS = <%=GPS %>

и замените store_locations на GPS, но моя карта станет пустой.

Скажите, пожалуйста, что именно мне не хватает, чтобы сделать это?

Ответы [ 3 ]

1 голос
/ 29 декабря 2011

Вы можете создать публичное свойство, которое возвращает значение GPS в code-begind.Создайте объект String или StringBuilder и определите открытое свойство.

Dim mgps As new Text.StringBuilder

Public ReadOnly Property GPS As String
  Get
     Return mgps.ToString
  End Get
End Property

Используйте объект mgps (stringbuilder) для добавления данных из результата базы данных.

mgps.AppendLine("[")
For I = 0 To ds.Tables("GPS").Rows.Count - 1
    mgps.AppendLine(ds.Tables("GPS").Rows(I).Item("GPS_ONE") & ",")
Next I
mgps.AppendLine("];")

Теперь вы можете использоватьGPS в JavaScript:

 var  GPS = <%=GPS %> 
1 голос
/ 29 декабря 2011

Область действия вашей переменной GPS находится внутри цикла for (в коде на стороне сервера) - поэтому она не существует вне этого.

Я не совсем уверен, что вы пытаетесь сделать,потому что прямо сейчас вы не сохраняете значения вне цикла, но объявляете переменную GPS до того, как ваш цикл, по крайней мере, позволит вам получить доступ к нему там, где вы в данный момент пытаетесь.выглядит примерно так:

    da.Fill(ds, "GPS")
    Dim GPS As String
    For I = 0 To ds.Tables("GPS").Rows.Count - 1
        I = ds.Tables("GPS").Rows.Count - 1
        GPS = ds.Tables("GPS").Rows(I).Item("GPS_ONE")
        Dim STATION As String = ds.Tables("GPS").Rows(I).Item("STA_NAME")
    Next I
0 голосов
/ 29 декабря 2011

В своем коде вы добавляете строки VB к вашему StringBuilder, которые вы возвращаете клиенту. Так что я думаю, что ваш отрендеренный код на стороне клиента (после подтверждения загрузки страницы выполните просмотр источника) показывает это в javascript:

var GPS1 = 'gps_line_1
gps_line_2
gps_line_3';

Измените следующую строку:

mgps.AppendLine(ds.Tables("GPS").Rows(I).Item("GPS_ONE"))

до:

mgps.Append(ds.Tables("GPS").Rows(I).Item("GPS_ONE"))
mgps.Append("\n")

Таким образом, на стороне клиента будет представлен javascript:

var GPS1 = 'gps_line_1\ngps_line_2\ngps_line_3';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...