Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Treeview Problem mit Sitemap DataBinding()
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

Treeview Problem mit Sitemap DataBinding()

beantworten | zitieren | melden

Ich hab ein Problem mit meinem Treeview Control.
Ich habe den treeview via Datasource (sitemap) die daten zur verfügung gestellt. Das klappt auch alles bestens. Nun wollt ich mal schauen ob im Treeview auch alle Nodes und Childnotes aufgeführt sind. Dieses war nicht so. Also hab ich treeview.databind() aufgerufen. Nun sind die Notes auch alle in meiner Instanz von Treeview gewesen.

Jetzt kommt ide ertse komische sache. Nach neu laden der Seite (treeview ist in einer Masterpage eingbaut) sind die Nodes wieder aus dem Treeview raus und ich muss databind() neu aufrufen.

Jetzt kommt aber damit das nächste Problem. Ich hab mir eine Klasse geschrieben die die Zustände der Nodes speichert. (expanded oder nicht).

Komisch ist jetzt aber wenn der Tree einen bestimmten Zustand hat, z.B. die ersten 2 sind eingeklappt und die 2 anderen sind ausgeklappt. Wenn ich databind aufrufe sind jetzt aber alle Nodes und Childnodes mit "expanded = true" was mich sehr stört denn so kann ich meinen Zustand des Treeviews nicht ordentlich speichern. Das laden klappt allerdings Problemlos, sprich schreibend kann ich auf expanded ohen Problem zugreifen.

Kann mir einer helfen?
Again what learned...
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Hat den keiner von euch ne Ahnung wieso databind() den zusand des Tree's nicht übernimmt bzw wie ich die notes mit den ordentlichen zustand fülle!
Again what learned...
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo rollerfreak2

Benutzt du denn POST- oder GET-Links im TreeView zum navigieren?


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

ICh benutze wahrscheinlich GET, ich fülle meinen Treeview mit einer Sitemap. Das Problem ist, ich weis nicht wo ich dort dem Treeview sagen kann das er die Links mit Get zurück senden soll (also Roundtrip zum Server). In php wüsste ich es. :-(

Hab auch schon gegoogelt, nur zum thema Treeview und GET Post, findet man nix brauchbares. Hast du/jemand einen Tip für mich?
Again what learned...
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hi rollerfreak2
Zitat von rollerfreak2
ICh benutze wahrscheinlich GET, ich fülle meinen Treeview mit einer Sitemap.
Ganz sicher, ja.
Such doch mal nach "sitemap +treeview +asp.net".

Den Zustand der SiteMap müsste eigentlich automatisch durch ASP.NET gehandelt werden. Ich benutze das Control aber praktisch nie.
Zitat von rollerfreak2
Das Problem ist, ich weis nicht wo ich dort dem Treeview sagen kann das er die Links mit Get zurück senden soll (also Roundtrip zum Server). In php wüsste ich es. :-(
Das versteh ich jetzt nicht.
Wenn du ein GET-Link anklickst geschieht immer ein Roundtrip zum Server, du bekommst schliesslich auch eine Antwort in Form einer neuen Seite.
Wie wärs denn in PHP? :-)
Zitat von rollerfreak2
Hab auch schon gegoogelt, nur zum thema Treeview und GET Post, findet man nix brauchbares. Hast du/jemand einen Tip für mich?
Schau mal ob du mit oberem was anfangen kannst.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Irgendwie scheinst du mein Problem nicht zu verstehen...?

Also noch mal, weil ich nicht glaub das es am get bzw post liegt. ICh führe einmal Databind aus. Dann sind im Treeview OBJECT alle Nodes bzw. Childnodes enthalten. Klicke ich auf ein Link des Tree's und lande zum Beispiel im dazugehörigen Handler (treeNodeChange) dann ist das Object des Treeviews immer noch mit den Nodes gefüllt. Nur Wenn ich jetzt zum Beispiel ein Button auf der Seite habe, und diesen Betätige, und im dazugehörigen Handler lande, dann ist meine Instanz des Tree's zwar noch da, aber die Nodes sind alle leer. Das ist das Problem. Wieso sind die jetzt leer, das heißt wieso werden die Informationen über den Tree nicht auch hier mit zum Server gesendet?????

Kanns du mir vielleicht jetzt besser helfen...?
Again what learned...
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo rollerfreak2

Mit POST schon.
Aber du darfst nur einmal binden:


<Control.DataSource = <Source>;
if!(this.IsPostBack) {
    <Control>.DataBind();
}


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Ich hab das bind natürlich nur einmal ausgeführt. Bin ja nicht doof. Nur hast du mir noch imme rnicht gesagt wie man dort post einstellt, und im inet (google etc.) findet man dazu nichts....
Again what learned...
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

@Peter Bucher

Ich habe das Gefühl das du dir die threads nicht richtig durch liest. Dann hättest du nämlich nicht so eine Antwort gegeben. Ich wollte ja nur wissen warum bei einem Button event der Inhalt des aktuellen Trees nicht mit gesendet wird, und du redest über GET und POST des Tree's. Das hat doch gar nichts damit zu tun...! Weil ich klicke ja diesem Moment nicht auf den Tree. Wenn ich auf den Tree klicke dann geht ja alles, egal ob GET und POST....
Again what learned...
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo rollerfreak2
Zitat von rollerfreak2
Ich hab das bind natürlich nur einmal ausgeführt. Bin ja nicht doof. Nur hast du mir noch imme rnicht gesagt wie man dort post einstellt, und im inet (google etc.) findet man dazu nichts....
Und die DataSource auch nur einmal zugewiesen?
Wenn du etwas nicht weisst, bist du noch lange nicht doof...
Zitat von rollerfreak2
Ich habe das Gefühl das du dir die threads nicht richtig durch liest.
Und ob ich das tue, ich stelle mal Behauptung für dich in den Raum.
Zitat von rollerfreak2
Dann hättest du nämlich nicht so eine Antwort gegeben. Ich wollte ja nur wissen warum bei einem Button event der Inhalt des aktuellen Trees nicht mit gesendet wird, und du redest über GET und POST des Tree's. Das hat doch gar nichts damit zu tun...! Weil ich klicke ja diesem Moment nicht auf den Tree. Wenn ich auf den Tree klicke dann geht ja alles, egal ob GET und POST....
Sicher hat das damit zu tun.

Das hier ist freiwillig und kein Nehmen und nichts Geben.
Geben bedeutet in diesem Fall zumindest Eigeninitiative und keine kontraproduktiven Behauptungen.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Du bist witzig, zum einen Behauptest du das du recht hast, und kannst mir aber nicht sagen wo ich beim Treeview sagen kann das die Links mit POST gemacht werden sollen. Zum anderen (du behauptest ja das es mit GET und POST des Treeviews zu tun hat) kannst du mir mal erklären warum wenn die Links mit POST ausgeführt würden, und ich nur einen BUTTON auf dieser Seite drücke, der Server die kompletten infos über den tree erhält und ohne POST der Tree LEER ist. Das ergibt nämlich NULL Sinn für mich...
Again what learned...
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo rollerfreak2
Zitat von rollerfreak2
Du bist witzig, zum einen Behauptest du das du recht hast, und kannst mir aber nicht sagen wo ich beim Treeview sagen kann das die Links mit POST gemacht werden sollen.
Du bist witzig, zum einen behauptest du, dass ich scheinbar nicht Recht habe, kannst mir dein Problem aber nicht genau schildern + sehe ich nicht wirklich Eigeninitive und dazu bist du noch frech und provozierst mich.

Hinzu kommt noch, das _du_ was möchtest.
Lass dir das mal durch den Kopf gehen, bitte.
Zitat von rollerfreak2
Zum anderen (du behauptest ja das es mit GET und POST des Treeviews zu tun hat) kannst du mir mal erklären warum wenn die Links mit POST ausgeführt würden, und ich nur einen BUTTON auf dieser Seite drücke, der Server die kompletten infos über den tree erhält und ohne POST der Tree LEER ist. Das ergibt nämlich NULL Sinn für mich...
Für dich, ja.

Ich drehe einfach mal um:
- Was ist POST?
- Was ist GET?

ASP.NET besitzt unter anderem eine PostBack-Architektur.
Das meint, Events werden durch Postbacks übertragen, Parameter, Daten werden vom Client zum Server durchgeschlauft. So unter anderem auch gewisse Daten eines TreeViews, Stichwort: ViewState.

Anhand dieser Daten (Dort POST zurückbekommen) lädt ASP.NET die Daten aus dem Cache.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Zur deiner letzen Frage:

- codieren von Anforderungsparameter als name-and-value Paare
- GET: fügt die Abfrage-Zeichenfolge zu der URL des Skripts auf dem Server, der die Anforderung verarbeitet, an
- POST: Das Protokoll übergibt die name-and-value Paar in dem HTTP-Anforderungsnachrichtentext

So grob der Unterschied.

Zweitens mal zu deinen Posts. Manche kannst du die echt sparen, sowas schreibt man nicht in Foren in denen Leute Hilfe suchen...!Wenn ich die Fehler kennen würde, würde ich Sie auch nicht posten. Vertsehst du das?
Zitat
Die Fehler sind selbsterklärend.
Auch der letzte. Du musst dich damit befassen.

Zum anderen hast du grad das erstemal behauptet das du mein Problem nicht verstehst, dann sag mir doch was du daran nicht verstehst.

Also noch mal, weil ich nicht glaub das es am get bzw post liegt. ICh führe einmal Databind aus. Dann sind im Treeview OBJECT alle Nodes bzw. Childnodes enthalten. Klicke ich auf ein Link des Tree's und lande zum Beispiel im dazugehörigen Handler (treeNodeChange) dann ist das Object des Treeviews immer noch mit den Nodes gefüllt. Nur Wenn ich jetzt zum Beispiel ein Button auf der Seite habe, und diesen Betätige, und im dazugehörigen Handler lande, dann ist meine Instanz des Tree's zwar noch da, aber die Nodes sind alle leer. Das ist das Problem. Wieso sind die jetzt leer, das heißt wieso werden die Informationen über den Tree nicht auch hier mit zum Server gesendet?????

Kanns du mir vielleicht jetzt besser helfen...?
Again what learned...
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo rollerfreak2
Zitat von rollerfreak2
- codieren von Anforderungsparameter als name-and-value Paare
- GET: fügt die Abfrage-Zeichenfolge zu der URL des Skripts auf dem Server, der die Anforderung verarbeitet, an
- POST: Das Protokoll übergibt die name-and-value Paar in dem HTTP-Anforderungsnachrichtentext

So grob der Unterschied.
So ungefähr, ok.
Zitat von rollerfreak2
Zweitens mal zu deinen Posts. Manche kannst du die echt sparen, sowas schreibt man nicht in Foren in denen Leute Hilfe suchen...!
Sorry, aber eine solche Anschuldigung verstehe ich nicht.
Welche Posts meinst du?
Bitte hilf mir da auf die Sprünge.

Okay, du meinst sowas wie das hier:
- Client Site Explorer funktioniert nicht

Ich stehe nach wie vor zu meinen Antworten.
Das (Client Site Explorer funktioniert nicht) ist von dir auch nicht gerade die feine Art und auch das ich dich auf die FAQ verweisen musste, spricht leider nicht für dich.
Zitat von rollerfreak2
Wenn ich die Fehler kennen würde, würde ich Sie auch nicht posten. Vertsehst du das?
Das ist kein Fehler hier, sondern eine falsche Logik / falsches Verständnis m.E.
Zitat von rollerfreak2
Zum anderen hast du grad das erstemal behauptet das du mein Problem nicht verstehst, dann sag mir doch was du daran nicht verstehst.
Ich brauche mehr Infos...
Zitat von rollerfreak2
Also noch mal, weil ich nicht glaub das es am get bzw post liegt. ICh führe einmal Databind aus. Dann sind im Treeview OBJECT alle Nodes bzw. Childnodes enthalten. Klicke ich auf ein Link des Tree's und lande zum Beispiel im dazugehörigen Handler (treeNodeChange) dann ist das Object des Treeviews immer noch mit den Nodes gefüllt. Nur Wenn ich jetzt zum Beispiel ein Button auf der Seite habe, und diesen Betätige, und im dazugehörigen Handler lande, dann ist meine Instanz des Tree's zwar noch da, aber die Nodes sind alle leer. Das ist das Problem. Wieso sind die jetzt leer, das heißt wieso werden die Informationen über den Tree nicht auch hier mit zum Server gesendet?????
...na geht doch, wieso nicht von Anfang an?

BTW: Die vielen Fragezeichen sind nicht nötig, sondern störend.
Zitat von rollerfreak2
Kanns du mir vielleicht jetzt besser helfen...?
Ja :-)

Wiederum nehme ich hier schwer an das hier über die SiteMap der Zustand per GET wiederhergestellt wird.
Auch wenn du mit dem anderen Button ein POST machst, sollte der Zustand wiederhersgestellt werden (Da die Adresse die gleiche bleibt).

Anders natürlich wenn dein Button gleich anschliessend ein Redirect macht oder ein POST auf eine andere Seite (PostBackUrl).
Da ich jetzt aber deine genaue Situation nicht kenne und das TreeView praktisch nie benutze, müsste ich mich da auch einarbeiten bzw. informieren.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Also ich poste mal ein bisschen code vielleicht ist es dann verständlicher.
Hier unten ein Projekt im VS2005. Kannst ja einfach mal debuggen und versuchen folgendes Nachzuvollziehen.

Wenn man die Nodes des Treeviews klickt dann funzt alles wunderbar, sprich man hat im entsprechenden Handler auch alle nodes im Tree vorhanden. Wenn man nun den Button der sich ebenfalls auf der SELBEN seite befindet, und man gelangt in den Handler, das ist der Treeview leer, sprich die Instanz am Server die vorher richtig geladen war, ist nun nicht weg, aber leer.

Und das ist das komische, sprich wenn man den Button klickt, wird der Tree serverseitig neu initialiersiert, ich geh zumindest davon aus, nur anhand der Tatsache das er leer ist, werden wahrscheinlich die werte des treeviews nicht mitgeschickt.
Attachments
Again what learned...
private Nachricht | Beiträge des Benutzers