treeview nodes aufklappen nach neuen seitenaufruf

17/03/2008 - 19:35 von bheyse | Report spam
folgendes problem:

erstelle trv als usercontrol per codebehind
sprache vb.net

die nodes werden aus einer mssql db gebunden.
feste knotenanzahl existiert nicht da die knoten immer
unterschiedliche datenanzahl haben können.

die nodes.text sind mit der navigaturl eigenschaft modifiziert
bei diesem urllink wird eine id übergeben um zb artikel
zu einer ausgewàhlten kategorie anzuzeigen.

beispiel knoten: lebensmittel hat den link ?id=9
wenn dieser knoten aber unterknoten hat zb
obst mit dem link: ?id
wen nich jetzt auf obst klicke (unterknoten von lebensmittel)
und die seite neugeladen wird,
ist das treeview komplett geschlossen.

ich möchte es gern schaffen, dass alle knoten geöffnet werden die ich vorher
aufgeklappt hatte.

ich hab bisher es nur geschafft, dass der hauptknoten geöffnet wird, sobald
ein unterknoten angeklickt wird macht er nichts.


ich hab nun versucht mit der übergebenen id zu arbeiten:
*************************************************
Private Sub ProducedNodes_02(ByVal TRV_DataTBL As DataTable, ByVal nodes As
TreeNodeCollection)

Dim cat as integer = Cint(request("cat"))

Dim rowMaster As DataRow
Dim rowDetails As DataRow

For Each TRV_DataRWS As DataRow In TRV_DataTBL.Rows

Dim TRV_NEW_NODE As New TreeNode()
' property by nodes...

TRV_NEW_NODE.Text = TRV_DataRWS("Name1").ToString()
TRV_NEW_NODE.NavigateURL = "?cat=" & TRV_DataRWS("ID_KAT").ToString()
TRV_NEW_NODE.ToolTip = "Klick: " &
UCase(TRV_DataRWS("Name1").ToString())
TRV_NEW_NODE.Value = TRV_DataRWS("ID_KAT").ToString()
TRV_NEW_NODE.PopulateOnDemand = (CInt(TRV_DataRWS("childnodecount")) > 0)

' expand by ROOTnodeurlclick expand rootnode with first subnodes ************
IF ( TRV_NEW_NODE.Value = (cat)) then
TRV_NEW_NODE.Expanded = true
End If

Nodes.Add(TRV_NEW_NODE)


Next TRV_DataRWS

End sub
*************************************************


Wie schaffe es nur, dass ich die vorhergehende aufgeklappte strukur wieder
so anzuzeigen ????
Framesets kann ich nicht nehmen.

viele grüsse
 

Lesen sie die antworten

#1 Jens Duczmal
17/03/2008 - 20:34 | Warnen spam
Hallo bheyse,

es wàre schön, wenn Du im Newsreader (oder Google oder sonstwo)
Deinen vollstàndigen Vor- und Zunamen eintragen würdest.

Bei genauem Hinschauen wirst Du feststellen, das wir das prinzipiell
alle hier machen. Man möchte ja auch wissen, wem man hilft.

Außerdem erhöht dies Deine Chance auf Antwort ungemein.

ich möchte es gern schaffen, dass alle knoten geöffnet werden die ich vorher
aufgeklappt hatte.



Ich war irgendwie überrascht, von welchen "Seiten" du Redest.
Vermutlich ASP.NET und HTML-Seiten. Nunja.

Also mit den NavigationLinks kenne ich mich nicht aus.

Aber wenn Du einen Knoten anklickst, dann kannst Du doch den
genauen Pfad zu dem Knoten ermitteln. Vielleicht gibt es sogar
noch die FullPath-Eigenschaft, die es mal in den CommonControls gab.

Danach schlüsselst Du Dir dann deinen ID-Path auf und klappst
alle Knoten der Reihe nach wieder auf.

z.B. ID's 15:9:3

Also beim Anklicken eines Nodes die ID lesen. Dann ein Trennzeichen
davor und in einer Schleife über den Parent-Node so weit nach
oben laufen, bis kein Parent mehr da ist.
So würdest Du auf die Zeichenfolge z.B. 15:9:3 kommen.

Und dann halt andersrum auslesen und aufklappen.

Jens

PS: Deine Shift-Taste ist defekt. :-)

Ähnliche fragen