从数据表重新加载 javascript 数据元素 asp.net 而不重新加载页面
Reload a javascript data element from asp.net datatable without reloading the page
>我不确定我是否使用了正确的术语,但这是我正在尝试做的...我有一个 asp.net 页面,该页面加载谷歌地图,然后从代码隐藏页面上的方法中创建的 JSON 数据添加标记。 最初加载时一切正常。 但是,如果我通过单击按钮调用函数 refreshTheMarkers(),则 populateTheMap 函数(第三行代码)中的"卡车"变量不会获得更新的 JSON 字符串,它仍然是与最初加载页面时的 JSON 字符串相同。 有没有办法"强制"刷新 ConvertDataTabletoString 方法?
<script type="text/javascript">
var map;
var infoWindow;
var markersArray = [];
var sbarDiv;
var trucks;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(50.08, -82.8),
zoom: 11,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
infoWindow = new google.maps.InfoWindow();
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
sbarDiv = document.getElementById('sbDivMain');
populateTheMap(true);
}
function populateTheMap(onStartup) {
clearExistingMarkers();
var sbarhtml = '';
trucks = JSON.parse('<%=ConvertDataTabletoString() %>');
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < trucks.length; i++) {
var truck = trucks[i];
var point = new google.maps.LatLng(parseFloat(truck.Latitude), parseFloat(truck.Longitude));
bounds.extend(point);
var marker = createMarker(point, truck);
var sidebarEntry = createSidebarEntry(marker, truck);
sbarDiv.appendChild(sidebarEntry);
}
// Center the map only on startup
if (onStartup) {
var pointCenter = bounds.getCenter();
var iZoomLevel = map.fitBounds(bounds);
if (iZoomLevel > 15) { iZoomLevel = 15; }
map.setCenter(pointCenter, iZoomLevel);
}
}
function refreshTheMarkers() {
clearExistingMarkers();
populateTheMap(false);
}
function clearExistingMarkers() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
//clear side bar entries
sbarDiv.innerHTML = '';
}
// plus some additional code...
这是代码隐藏页面...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace LiveCadWebApp
{
public partial class GPSTracking : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
// Convert the DataTable to a JSON string
public string ConvertDataTabletoString()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Server=.'SQLExpress;Database=MyDatabase;Trusted_Connection=True;"))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM vwTruckGPSStatusInformation", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return GetJSONFromDataTable(dt);
}
}
}
从本质上讲,我想做的是每隔几秒钟重新加载一次标记,而无需重新加载谷歌地图......
你对 web 方法进行 ajax 调用以获取更新的 json
查看这些示例http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
相关文章:
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载