在页面加载时访问Javascript全局变量

时间:2013-08-08 06:36:21

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

我使用后面的代码从数据库向javascript数组添加一些元素 这是代码:

protected void LoadPlaces() {
  try {
    DataTable dt = cs.ExecuteQry(@"SELECT location_coords from igr.locationdata ", null);
    String Script = "";
    foreach(DataRow dr in dt.Rows) {
      string Coord = "PlacePoints=[";
      bool IsNotFirst = false;
      foreach(string C in dr[0].ToString().Trim().Split('\n')) {
        if (IsNotFirst) Coord += ",\n";
        Coord += @"new google.maps.LatLng(" + C.Trim().Split(';')[0].Split(':')[1] + "," + C.Trim().Split(';')[1].Split(':')[1] + @") ";
        IsNotFirst = true;
      }
      Coord += "];";
      Script += Coord;
      //ScriptManager.RegisterStartupScript(Page, GetType(), "AddPointsToMap", Coord, true);
    }
    ScriptManager.RegisterClientScriptBlock(Page, GetType(), "SetMap", Script, true);

  } catch (Exception ex) {
    Alert(ex.Message);
  }
}

我从Page_Load()调用了这个函数, 但是当我试图访问map变量时,它是未定义的,我该如何克服这个问题 我在这个页面上添加了一个按钮,我点击了按钮的上述功能点击这个按钮,那时javascript变量图是可以的。 Javascript代码是

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

AddPlace = function (Place) {
  if (Place == null) return;
  var mark = new google.maps.Polygon({
    paths: Place,
    strokeColor: '#F50',
    strokeOpacity: 0.5,
    strokeWeight: 2,
    fillColor: '#FAA',
    clickable: true,
    fillOpacity: 0.7
  });
  mark.setMap(map);
  Places.push(mark);

  google.maps.event.addListener(Place, 'click', function (event) {
    var vertices = this.getPath();
    var strvertices = '';
    for (var i = 0; i < vertices.getLength(); i++) {
      strvertices.value += 'A' + i + ':' + vertices.getAt(i).lat() + ';';
      strvertices.value += 'B' + i + ':' + vertices.getAt(i).lng();
      strvertices.value += '\n';
    }
    console.Debug(strvertices);
  });
}

1 个答案:

答案 0 :(得分:0)

你在哪里写javascript代码?

将javascript代码写在body标签的底部或表单的末尾,然后这些变量将是可访问的。