Uložení stavu treeView   otázka

ASP.NET WebForms

Dobrý den, na masterpage mám umístěný treeView a při kliknutí přejdu na příslušnou contentPage. Potřboval bych ale vědět jak uložit stav Treeview. Pokud uživatel rozbalí nějáký odkaz do další úrovně a pak přejde na content page, treeview má zase defaultní nastavení (to znamená celý zabalený). Potřebuji aby se nějákým způsobem uložilo co uživatel rozbalil a zůstalo to tak uchováno až do uzavření stránky. Našel jsem sice odkaz, ale tam bylo jenom jak to je řešeno když se treeview generuje kodem a něják nejsem schopný to aplikovat na moji situaci.Já ho mám udělaný manualne. Je nějáké jednoduché řešení jak to ošetřit? Zřejmě se bude přes viewState.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ViewState je jedna možnost, ale nevím, jak máte aplikaci řešenou. Pokud pomocí TreeView přepínáte na jiné stránky, tak je ViewState k ničemu. Osobně projdu celý strom a do cookies si uložím ID položek, které jsou rozbalené. Při načtení stránky si zase tohle načtu. Stačí takhle, nebo chcete zdrojový kód?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud by jste sem dal kousek kódu určitě by mi to výrazně pomohlo. Moc děkuji:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Narazil jsem na stejný problém Treeview v MasterPage. Zdrojem dat pro Treeview mám XML soubor, otevírá se maximálně do 2 úrovní a nejsem schopen zachovat jeho stav - a aby zůstala dokonce označena poslední volba uživatele nějakou barvou, to už snad ani po tom ani nemůžu chtít...

Prosím o ukázku řešení, pokud existuje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Resp. alespoň mi někdo napište, jak se dá zjistit číslo odkliknutého uzlu v Treeview, navázaného na XML.

Záchytný bod pro identifikaci je metoda

Sub TreeView1_TreeNodeExpanded(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs)

Dim nazev As String

nazev = e.Node.ValuePath 'vrátí cestu otevíraného uzlu např. MENU/*AKCE*

TreeView1.Nodes.Item(0).ChildNodes.Item(3).Expand() 'rozbalí hl.uzel(0) a poduzel č.3
e.Node '..nabízí zjistit název, ale číslo kliknutého Itemu nenabízí...:
nazev = e.Node.Value 'vrátí název otevíraného uzlu nebo poduzlu - ne ale uzlu, který se dále nerozevírá

Díky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vím že je to už docela starý dotaz ale než kvůli tomu zakládat nové vlákno tak se zeptám zde. Řeším podobný problém aby mi TreeView drželo zobraznou aktuální stránku na které se uživatel nachází a nemůžu se dopátrat k řešení, jak postupovat. Nemohl by mě prosím někdo nasměřovat nebo třeba odkaz na nějaké stránky kde se toto téma řeší ?

Předem moc děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, já to nakonec zmastil tak, že TreeView mám v MasterPage, zdroj pro menu a podmenu v XML a hlídám, co se v TreeView otevřelo. ID ukládám do Session (asi je lepší do coockies) a podle potřeby znovu TreeView celé nastavím. XML vytváří skladový program, kterému jsem dovolil tvořit jen 3 podúrovně (Hl.menu, skupina zboží a typ zboží).

Z ContentPage volám TreeView takto:

Dim mkus1 As New System.Web.UI.WebControls.TreeView
            mkus1 = Master.FindControl("TV1")                   
            mkus1.DataBind()
            mkus1.Nodes.Item(0).ChildNodes.Item(Session("patro")).Expand() 
            mkus1.Nodes.Item(0).ChildNodes.Item(Session("patro")).ChildNodes.Item(Session("volba")).Select() 'rozsvítí poslední volbu v hl.uzlu(menu) a poduzlu

Použil jsem to např.zde:

http://www.hf-hora.cz/obchodMC.aspx?typ=...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Session nejsou vhodné!Použijte cookies a do nich si ukládajte aktuálně otevřenou strukturu treeview,např.pomocí ID - jak už psal Tomáš Herceg.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback