Store
Para trabajar con la clase
Store es imprescindible activar la propiedad "
enableStore".
Store es una funcionalidad muy potente que nos permitirá compartir información entre cliente, servidor y los serverEvents.
Funciona como un Dictionary<string, string>, con una "key" y un "value".
En el ejemplo vemos cómo se utiliza el store en javascript (un evento de cliente), en un serverEvent y en ASP.NET:
- Javascript: Creamos el objeto Store de un modo similar a éste: var store = new Store('{0}_Store'); A la varible store le podemos hacer un "Set(key, value)" y un "Get(Key)". Suele usarse en los eventos de cliente.
- serverEvents: cuando estamos en un serverEvent, podemos utilizar el GAjaxServerEventArgs llamando a e.store. e.store es un Dictionary<string, string> normal de ASP.NET .
- ASP.NET: cada instancia de GMaps tiene una propiedad Store, que podemos utilizar siempre que queramos en lado de servidor (aunque en el serverEvent sea aconsejable usar e.store).
Code.aspx
<cc1:GMap ID="GMap1" runat="server" enableServerEvents="true" enableStore="true" OnClick="GMap1_Click" serverEventsType="AspNetPostBack" />
<cc1:GMap ID="GMap1" runat="server" enableServerEvents="true" enableStore="true" OnClick="GMap1_Click" />
Code.aspx.cs
private static int _i = 0;
public static int i
{
get
{
return _i++;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GMap2.addListener(new GListener(GMap2.GMap_Id, GListener.Event.zoomend,
string.Format(@"
function(oldZoom, newZoom)
{{
var store = new Store('{0}_Store');
store.Set(Math.random(), oldZoom + '-' + newZoom);
}}
", GMap2.GMap_Id)));
GMap2.addControl(new GControl(GControl.preBuilt.SmallZoomControl));
}
GMap1.Store.Add(i.ToString(), DateTime.Now.ToString());
}
protected string GMap1_Click(object s, GAjaxServerEventArgs e)
{
e.store[i.ToString()] = DateTime.Now.ToString();
Store c = GMap1.Store;
return string.Format("alert('{0} Store items: {1}')", e.map, e.store.Count);
}