Avatar billede simsen Mester
13. januar 2007 - 17:56 Der er 31 kommentarer og
1 løsning

Menu struktur som træ

Hej,

Jeg vil lave en dynamisk menu, som træstruktur, der udvider sig, hvis der er childnodes .......jeg aner dog ikke hvordan jeg skal komme igang pånær databasen altås den har jeg som følgende:

menuId  menuName  menuChild
1        Heste    0
2        Føl      1
3        Hunde    0
4        Hvalpe    3

osv

Nogen der kender et link til en "how to for dummies", der laver en menu som folder sig ud (lukker sig) alt efter om der er childnodes?

mvh
simsen :-)
Avatar billede fun22 Nybegynder
13. januar 2007 - 18:01 #1
Avatar billede simsen Mester
13. januar 2007 - 18:32 #2
fun

Desværre - den fremkommer med den ene fejl efter den anden.......
Avatar billede dr_chaos Nybegynder
14. januar 2007 - 10:45 #3
Avatar billede simsen Mester
14. januar 2007 - 18:24 #4
hejsa dr_chaos

Desværre - det er jo ligesom den indbyggede built-in TreeView i 2005......den fremkommer også med +/- som man skal klikke på.....og det vil jeg altså ikke have. Det skal være ren tekst, som åbner/lukker sig, hvis der er submenuer/menChilds

mvh
simsen :-)
Avatar billede dr_chaos Nybegynder
14. januar 2007 - 18:31 #5
ah jeg misforstod dig.

Du kan lave en asp:menu.
Der kan du lave en træstruktur uden +/-
Avatar billede keenkbh Nybegynder
15. januar 2007 - 21:20 #6
du kunne også tage at kigge på: hhtp://www.obout.com ...

Der er en hel masse forskellige menuer, og de mange af dem er tilmed gratis. Bruger selv slidemenu.
Avatar billede simsen Mester
20. januar 2007 - 11:16 #7
Forsøger lige at skrive det hele én gang til......

Håber I stadig kigger med herinde...

dr_chaos
Jeg har forsøgt mig med <asp:Menu men kan ikke se, at der er mulighed for at expande/colapse når man trykker på en tekst med undermenuer?

keenkbh
Jeg kan godt lide den slidemenu fra obout - men jeg har et par problemer... Når jeg forsøger at test en af de to, jeg godt kunne tænke mig (enten plain eller basic (hvis jeg kan få lov at ændre farver mm), får jeg følgende fejl:

File "/slidemenu/smscript/SlideMenu.js" kan ikke findes.

Min struktur på testsiden jeg har oprettet er:

App_Data
Bin
slidemenu
  smscript
  styles
Default.aspx
Default.aspx.cs

Jeg har forsøgt mig med følgende:
<osm:SlideMenu runat="server" ID="myMenu" />
og
<osm:SlideMenu runat="server" ID="myMenu" ScriptPath = "/slidemenu/smscript"  />
<osm:SlideMenu runat="server" ID="myMenu" ScriptPath = "/smscript"  />

Hvad skal jeg skrive, for at jeg kan test af?

mvh
simsen :-)
Avatar billede simsen Mester
20. januar 2007 - 11:51 #8
keenkbh

Bare glem ovennævnte......jeg må have skrevet forkert i <osm:SlideMenu runat="server" ID="myMenu" ScriptPath = "/slidemenu/smscript"  />

Da jeg forsøgte en gang til, virkede den godt nok.....

Men nu er jeg sådan set temmelig møj fattig, så jeg er nødt til at have deres gratis basic version.......men jeg kan bare ikke hitte ud af, hvordan (altså hvilken css fil) jeg skal ændre i, for at ændre farver/tekst osv.????

mvh
simsen :-)
Avatar billede keenkbh Nybegynder
20. januar 2007 - 16:33 #9
der er desværre den downside ved gratis versionen, at den kun kommer med én style, og det er ikke muligt at tilknytte .ccs til den direkte, som det er med pro versionen.

Der er dog det workaround, at du kan lave css klasser for hvert parent-id og child-id.

Personligt har jeg selv kun gjort det med parent-id's, men vil tro, at det også sagtens kan lade sig gøre med child-id's.
Avatar billede simsen Mester
20. januar 2007 - 18:56 #10
keenkbh

Hvordan laver jeg den workaround?
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 19:30 #11
på det indbyggede treeview kan du sætte showExpandcollapse="false" for at fjerne +/-
Avatar billede simsen Mester
20. januar 2007 - 20:20 #12
Det er bare hver evig eneste gang efterhånden herinde........ Jeg skriver - og sender - og det bliver slettet.... *GG*

Nå forsøger igen:

dr_chaos

Når jeg forsøger at bruge <asp:menu og vælger Auto format i Menu tasks, så kan jeg vælge mellem 5 forskellige skemaer. Men alle skemaer har samme struktur nemlig:

Menu1 -> undermenu11
        undermenu21
Menu2 -> undermenu21
Menu3 -> osv

Jeg vil gerne have en menu som du kan se på www.rtcenter.dk (Vælg Produkter - og du vil se i venstre side, den måde, jeg gerne vil have det opbygget på - forsøg at trykke på en af punkterne under Produkter til venstre). Jeg vil dog have den så den selv laver den udfra en database - altså den bliver skabt dynamisk.

Er det noget <asp:Menu kan - hvis ja - har du så et link til en tutorial - jeg er altså temmelig lost lige nu ....

mvh
simsen :-)
Avatar billede simsen Mester
20. januar 2007 - 20:26 #13
dr_chaos

Sætter jeg  showExpandcollapse="false" så viser den kun hovedmenuerne - og ikke undermenuer, når jeg forsøger at klikke på en af hovedmenuerne

mvh
simsen :-)
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:26 #14
Nej du skal bruge et treeview.
Der er en guide til den i min tidligere post.
du skal bare sætte showExpandcollapse="false" på selve treeviewet.
så fjerner du +/i.
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:28 #15
hvordan generer du noderne.
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:34 #16
prøv evt at sætte ExpandDepth="FullyExpand" på treeviewet.
Eller sæt alle noder til selectaction=selectexpand;
Avatar billede simsen Mester
20. januar 2007 - 20:39 #17
dr_chaos

Jeg kan så også godt få den til at expande ved at vælge SelectExpand i SelectAction - men så mangler jeg så stadig, at den også vil colapse (altså trække sig sammen igen, når jeg trykker igen på teksten)

mvh
simsen :-)
Avatar billede simsen Mester
20. januar 2007 - 20:40 #18
Lige nu generer jeg dem ved at skrive dem direkte ind - har ikke lavet database delen.....(er jeg for doven til, hvis jeg ikke kan få det til at fungere)
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:43 #19
så skal du bruge onselectednodechange event:
OnSelectedNodeChanged="treeview_OnSelectedNodeChanged"


protected void treeview_OnSelectedNodeChanged(object sender, EventArgs e)
    {
        if (tr.SelectedNode.Expanded)
            tr.SelectedNode.CollapseAll();

    }
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:44 #20
tr er id på treevievet.
Avatar billede simsen Mester
20. januar 2007 - 20:50 #21
Jeg skal trykke 2 gange på teksten, for at få den til at expande/colapse?
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:52 #22
prøv lige med:
protected void treeview_OnSelectedNodeChanged(object sender, EventArgs e)
    {
        if (tr.SelectedNode.Expanded)
            tr.SelectedNode.CollapseAll();
          else
tr.SelectedNode.Expand();


    }
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 20:53 #23
hvis det ikke virker så paste lige hele din kode.
Avatar billede simsen Mester
20. januar 2007 - 20:55 #24
Det virker som sådan - jeg skal bare trykke to gange, for at få det til at virke......hver gang - og det bliver folk jo trætte af....

Du får koden:

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        &nbsp;Test af menustruktur<br />
        <br />
        <br />
        <br />
        <asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged"
            ShowExpandCollapse="False">
            <Nodes>
                <asp:TreeNode Expanded="False" PopulateOnDemand="True" SelectAction="SelectExpand"
                    Text="Heste" Value="Heste">
                    <asp:TreeNode Text="F&#248;l 1" Value="F&#248;l 1"></asp:TreeNode>
                    <asp:TreeNode Text="F&#248;l 2" Value="F&#248;l 2"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Expanded="False" PopulateOnDemand="True" SelectAction="SelectExpand"
                    Text="Hunde" Value="Hunde">
                    <asp:TreeNode Text="Hvalpe 1" Value="Hvalpe 1"></asp:TreeNode>
                    <asp:TreeNode Text="Hvalpe 2" Value="Hvalpe 2"></asp:TreeNode>
                    <asp:TreeNode Text="Hvalpe 3" Value="Hvalpe 3"></asp:TreeNode>
                </asp:TreeNode>
            </Nodes>
        </asp:TreeView>
        <br />
    </div>
    </form>
</body>
</html>

Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
     
    }

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        if (TreeView1.SelectedNode.Expanded == true)
        {
            TreeView1.SelectedNode.CollapseAll();
        }
        else
        {
            TreeView1.SelectedNode.ExpandAll();
        }
    }
}
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 21:20 #25
prøv med denne her:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
       
            TreeView1.CollapseAll();
            ExpandNodes(TreeView1.SelectedNode.ValuePath);
    }
    private void ExpandNodes(string valuepath)
    {
        string[] tmp = valuepath.Split('/');
        string tmpValuePath=string.Empty;
        foreach (string s in tmp)
        {
            tmpValuePath+=s;
            TreeView1.FindNode(tmpValuePath).Expand();
            tmpValuePath += "/";

        }
    }
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 21:20 #26
den virker præcist som den på den side du viste.
Avatar billede simsen Mester
20. januar 2007 - 21:46 #27
Du er bare en engel....... så mangler jeg bare at hente fra database - men der bruger jeg bare et af de link, du har givet mig.

Smid et svar og du får dine velfortjente points - rigtig mange tak for hjælpen

mhv
simsen :-)
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 21:50 #28
hmm jeg vil foretrække ikke at være din engel :)
svar :D

Du kommer nok til at skulle udvide ExpandNodes når du henter fra database.
Noget i denne stil:
tmpValuePath+=s;
TreeView1.FindNode(tmpValuePath).Populate();
            TreeView1.FindNode(tmpValuePath).Expand();
            tmpValuePath += "/";
Avatar billede simsen Mester
20. januar 2007 - 22:00 #29
dr_chaos

Rolig nu - jeg ER altså en kvinde.....og bare et udtryk, jeg bruger, når jeg er mega glad *griner*

og tak for det sidste - vil jeg huske at bruge i morgen, når jeg forsøger med databasen...

mvh
simsen :-)
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 22:04 #30
lol jamen så er det ok.
Synes også det var en anelse feminint at kalde nogen engel :)

Man vænner sig jo til at de fleste nørder er mænd :)
og jeg vil helst ikke være en anden mands engel :)
Avatar billede simsen Mester
20. januar 2007 - 22:18 #31
DET forstår jeg så godt ;-) Men vi er også nogle få kvindlige nørder *GG*
Avatar billede dr_chaos Nybegynder
20. januar 2007 - 22:20 #32
Det ved jeg de er bare sjældne.
da jeg læste til IT-ingeniør var kun 5 ud af 120 startende kvinder :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester