Problem mit Funktionsweise von ASP.NET
-
Hi
Vielelicht kann mir einer folgenden Sachverhalt erklären:
Als erstes habe ich eine shared variable angelegt mit dem Namen "icon". Weiter
gibt es eine funktion die bei einem DropDownList den OnSelectedindexChanged event behandelt und somit die icon variable verändert. Das funktioniert auch soweit.Nun gibt es einen button der onclick einen marker auf GMap setzt mit passenden icon zu in DropDownList gewählten kategorie - auch hier funktioniert es soweit.
Hier ist zu vergleich der Code von dieser Fkt: ( in vb )' setz den gewaehlten Marker an gewuenschte Stelle - ob etwas in suchfeld eingegeben ist ' wird von validator ueberprueft Sub setMarker(ByVal Sender As Object, ByVal E As EventArgs) Handles btnOK.Click Dim sMapKey As String = ConfigurationManager.AppSettings("googlemaps.subgurim.net") Dim gCode As Subgurim.Controles.GeoCode = GMap.geoCodeRequest(tb6.Text, sMapKey) Dim mOpts As New GMarkerOptions(icon) Dim latLng As New Subgurim.Controles.GLatLng(gCode.Placemark.coordinates.lat, gCode.Placemark.coordinates.lng) Dim mark2 As New GMarker(latLng, mOpts) GMap1.setCenter(latLng, 14, Subgurim.Controles.GMapType.GTypes.Normal) GMap1.addGMarker(mark2) End Sub
Nun will ich auf der GMap den onClick ereignis abfangen und einen marker an der angecklickten stelle setzen - jetzt funktioniert es bis auf den Wahl des Symbols für GMarker und bis auf den Texteintrag aus tb6.
Hier ist der code dazu:Protected Function mausClick(ByVal s As Object, ByVal E As GAjaxServerEventArgs) As String Dim mOpts As New GMarkerOptions(icon) Dim latLng As New Subgurim.Controles.GLatLng(E.point.lat, E.point.lng) Dim mark As New GMarker(latLng, mOpts) Dim window As New GInfoWindow(mark, tb6.text, True) Return window.ToString(E.map) End Function
( die fkt- Signatur ist von Subgurim vorgegeben ) Dies ist ja eine serverseitige funktion - wieso werden dann icon und tb6.textz nicht eingelesen?
Nun, ich vermute das es irgendwas mit Funktionsweise von ASP.NET zu tun hat das icon die gleiche bleibt wie in page_load initialisiert wurde.
Kann mir vielleicht einer Erklären woran es liegt?
( hier steht übrigens was GAjaxServerEventArgs ist: http://en.googlemaps.subgurim.net/ejemplos/ejemplo_993000_Eventos-Servidor.aspx )
-
Hi,
sehr schwer zu verstehen, was genau dein Problem ist.
Nun, ich vermute das es irgendwas mit Funktionsweise von ASP.NET zu tun hat das icon die gleiche bleibt wie in page_load initialisiert wurde.
Jedenfalls wird page_load vor den Eventmethoden aufgerufen.
habe ich eine shared variable
Shared ist doch statisch oder?
Ist das eine gute Idee? Das nutzt man eher, wenn irgendwas für alle Seitenbesucher gesetzt werden soll.
Hier könnte aber jemand zwischendurch den Wert verändern, was sicherlich nicht gewünscht ist.
-
Zusammengefasst ist mein Problem das bei onclick event der text von einem textbox nicht eingelesen wird und das der wert von variable sich nie ändert - bleibt so wie in page_load gesetzt.
Nun bei einem anderen onclick ereinis werden genau die gleichen sachen abgefragt - aber da funktioniert alles.
( im ersten beitrag steht das gleiche, nur ausführlicher und mit beispielen )
Die frage ist nun was sind es für Mechanismen die sowas bauen
-
Feld schrieb:
- bleibt so wie in page_load gesetzt.
Wie jetzt?
page_Load wird nach jedem Postback aufgerufen und wenn du da Werte setzt, dann sind in der Methode die das Click-Event bearbeitet,
natürlich die, die im page_load gesetzt wurden.
Fragst du nicht ab, ob es ein Postback ist?
Wird die erste Methode (wo es klappt) vielleicht nur nach dem ersten Seitenaufruf aufgerufen?
-
in page_load gibts abfrage ob es postback ist oder nicht - also die variable ist ein einziges mal zu anfang initialisiert. Dann bei DropDownList onSelectedIntexChanged wird dieser variable ein neues wert zugewiesen. Die variable ist shared damit alle funktionen auf die gleiche variable zugreifen können.
nun 2 onclick ereignise - im ersten fall funktioniert alles ( unabhängig von zeitpunkt wann ich es mache ) und im zweiten Fall ist der variablenwert immer so wie es initialisert wurde ( 1 mal beim ersten Laden ) und bleibt auch so ( im ersten fall wird genau die gleiche variable verwendet - die ist ja shared - hat aber trotzdem einen anderen wert )
Und ich überlege - wie ist es möglich?