Hej Pellesoftanhängare! http://www.winnetmag.com/Article/ArticleID/16123/16123.html Du behöver egentligen bara parent och child i alla noder och sedan bra uppdateringsmetoder... Inte svårt alls... Iaf inte i teorin... *s* Jag har en nästan exakt likadan lösning och jag tycker den fungerar bra. Jag har ett ID (Identity) för varje nod, en ParentProjectID som pekar på projektet ovanför (det är en projektstruktur jag sparar). Dessutom lagrar jag sorteringsordningen i OrdinalPosition och även Level av skäl som jag inte kommer på nu. Ifall du ser till att varje nod har ett unikt värde i sortorder så behöver du inte ändra sortorder när du flyttar ett element. De kommer att sorteras korrekt ändå. Du behöver ingen stored procedure ifall du inte vill, eftersom du bara ändrar ett enda värde i tabellen, parentId för noden du flyttar.Menyträdstrukturer?
Jag sitter och lurar på en databasbaserad menylösning där alla noder ska kunna flyttas fritt i trädet. Alltså en child ska kunna bli parent osv.
Den tänkta lösningen är idag:
- ett fält med parentId (som är 0 om det är root)
- ett fält med sortorder som håller ordning på elementets ordning i förhållande till de övriga.
- När ett element flyttas uppdateras allt med ett par stored procedures(från helvetet) som ändrar parentId på valda element samt sortorder på alla element i trädet.
Det känns inte direkt som en optimal lösning. Någon som sitter inne på en bättre lösning eller lite resurser i ämnet?
Tacksam för alla typer av svar,
TobiasSv: Menyträdstrukturer?
http://www.winnetmag.com/Article/ArticleID/8999/8999.html
http://www.winnetmag.com/Article/ArticleID/25634/25634.html
http://www.winnetmag.com/Article/ArticleID/8826/8826.html
/mickeSv: Menyträdstrukturer?
/EmmaSv: Menyträdstrukturer?
Jag tycker detta fungerar bra, det går löjligt enkelt att flytta en hel gren (branch) genom att bara ändra ParentProjectID så länge man validerar att man inte flyttar grenen "in i sig själv". Att ändra sorteringsordning är ju också busenkelt i t ex en SP.
Jag ser inga problem med denna lösning...Sv: Menyträdstrukturer?
När du ska ändra sorteringsordning i en nivå så byter du bara sortorder mellan två poster.
När du skapar en ny post så hämtar du max(sortorder)+1 från tabellen. Posten hamnar då sist bland de poster som har samma parentId.