I have a DirectMethod like this. It create a dynamic Array from database. And register array with ClientScript.RegisterArrayDeclaration for using in Javascript. If this directMethod running in page_load., can register my Array.
[DirectMethod]
public void getCoordinates(int devId)
{
string latArrayStr="";
string lngArrayStr="";
ArrayList coordinates = new ArrayList();
coordinates.AddRange((from c in context.Logs
where c.devId == devId && c.LogId >= 100
select new coordinates
{
Lat = c.Latitude,
Lng = c.Longitude
}).ToList());
for (int i = 0; i < coordinates.Count; i++)
{
latArrayStr = latArrayStr + "\"" + ((MyProject.Coordinates)(coordinates[i])).Lat.ToString() + "\"";
lngArrayStr = lngArrayStr + "\"" + ((MyProject.Coordinates)(coordinates[i])).Lng.ToString() + "\"";
if (i != coordinates.Count - 1)
{
latArrayStr = latArrayStr + ",";
lngArrayStr = lngArrayStr + ",";
}
}
ClientScript.RegisterArrayDeclaration("latArray" + devId.ToString(), latArrayStr );
ClientScript.RegisterArrayDeclaration("lngArray" + devId.ToString(), lngArrayStr);
}
Client Side(JS): Im calling DirectMethod like this. DirectMethod running correctly(created and registered my arrays) i can see with debugging, but i cant get my Arrays to JS.
google.maps.event.addListener(marker, 'click', function () {
var dev = Store.getById(marker.title);
Ext.net.DirectMethods.getCoordinates(dev.data.devId, {
success: function (result) {
var a;
var devicesCoordinates = [];
var info = new google.maps.InfoWindow();
info.setContent('<button type="button">button1</button>');
info.open(map, marker);
alert(dev.data.devId);
latArray.push();
lngArray.push();
},
failure: function (errorMsg) {
Ext.Msg.alert('Hata', errorMsg);
}
});
});