Laden...

Treeview Problem mit Sitemap DataBinding()

Erstellt von rollerfreak2 vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.114 Views
rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren
Treeview Problem mit Sitemap DataBinding()

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...

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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...

5.941 Beiträge seit 2005
vor 15 Jahren

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

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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...

5.941 Beiträge seit 2005
vor 15 Jahren

Hi 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.

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? 🙂

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

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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...

5.941 Beiträge seit 2005
vor 15 Jahren

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

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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...

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

@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...

5.941 Beiträge seit 2005
vor 15 Jahren

Hallo 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...

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.

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

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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...

5.941 Beiträge seit 2005
vor 15 Jahren

Hallo 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.

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

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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?

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...

5.941 Beiträge seit 2005
vor 15 Jahren

Hallo 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.

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:

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.

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.

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...

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.

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

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 15 Jahren

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.

Again what learned...