Hallo,
ich möchte auf einer asp.net Seite in C# den Wert einer Textbox im
Programmcode ändern.
Ich nutze die google-maps-subgurim API; bei einem Klick in die Karte
lese ich die Koordinaten aus und möchte diese dann in eine Textbox
eintragen.
Leider werden die Textbox Daten in nach dem unload immer wieder
zurückgesetzt und nicht an den client gesendet.
Die Textbox ist also immer leer. (im PageLoad Eventhandler werden keine
Daten überschrieben).
Was muss ich tun, um die Daten in der Textbox anzuzeigen?
Viele Grüße
Jan
hier der passende Code dazu:
1 | Initialisierung der Textbox und der Karte:
|
2 |
|
3 | <asp:TextBox ID="TbLatitude" runat="server" Width="100%"></asp:TextBox>
|
4 | ...
|
5 | <cc1:GMap ID="GMap1" runat="server" enableServerEvents="True" OnClick="GMap1_Click" Width="100%" Height="100%"/>
|
...
1 | C# Code:
|
2 |
|
3 | protected void Page_Load(object sender, EventArgs e)
|
4 | {
|
5 | if (!IsPostBack)
|
6 | {
|
7 | BuildMap();
|
8 | }
|
9 |
|
10 | }
|
11 | private void BuildMap()
|
12 | {
|
13 | GMap1.Add(new GControl(GControl.preBuilt.LargeMapControl));
|
14 | GMap1.enableHookMouseWheelToZoom = true;
|
15 | GMap1.Language = "de";
|
16 |
|
17 | GLatLng goe = new GLatLng(51.53933, 9.93406); //Göttingen
|
18 | GMap1.setCenter(goe, 11);
|
19 | GInfoWindow window = new GInfoWindow(goe, "<div > </div>"); //<div style=\"height:300px;\"><blink>Loading...</blink></div>
|
20 | string marker_func ="function(marker, point) {" + window.ToString(GMap1.GMap_Id) + "}";
|
21 |
|
22 | GMap1.Add(new GListener(GMap1.GMap_Id, GListener.Event.click, marker_func));
|
23 | }
|
...
1 | Eventhandler:
|
2 |
|
3 | protected string GMap1_Click(object s, GAjaxServerEventArgs e)
|
4 | {
|
5 | inverseGeocodingManager igeoManager = new inverseGeocodingManager(e.point, "es");
|
6 | inverseGeocoding iGeos = igeoManager.inverseGeoCodeRequest();
|
7 |
|
8 | geoName geo;
|
9 | if (iGeos.geonames.Count > 0)
|
10 | {
|
11 | geo = iGeos.geonames[0];
|
12 |
|
13 | this.latitude= geo.initialPoint.lat.ToString(); //Breite
|
14 | this.longitude= geo.initialPoint.lng.ToString(); //Länge
|
15 |
|
16 | string infowindow = "<div style=\"height:70px; width:200px;\"> <b>Position</b><br/>" + "Breite: " + geo.initialPoint.lat.ToString() + "<br/>Länge: " + geo.initialPoint.lng.ToString() + "</div>";
|
17 |
|
18 | GInfoWindow window = new GInfoWindow(e.point, infowindow, true);
|
19 |
|
20 | !*!*! TbLatitude.Text = this.latitude;
|
21 | !*!*! TbLongitude.Text = this.longitude;
|
22 |
|
23 | return window.ToString(e.map);
|
24 | }
|
25 | else
|
26 | {
|
27 | return string.Empty;
|
28 | }
|
29 | }
|
Der Code für die Karte kommt von:
http://de.googlemaps.subgurim.net/ejemplos/ejemplo_97750_GeoCoding-inverso.aspx
Das Programm springt in den Eventhandler hinein und die Textboxen
erhalten die richtigen Werte. Wenn ich mir die folgenden Events ansehe,
kann ich die Daten bis zum Unload-Ereignis verfolgen. Beim nächsten Init
Ereignis sind die Daten wieder weg. Ich habe auch schon versucht, die
Daten über die Session zwischenzuspeichern und dann zu laden. Ging aber
auch nicht.