Avatar billede jhansen31 Nybegynder
22. januar 2007 - 09:06 Der er 7 kommentarer og
1 løsning

Menu generet via xml struktur

Jeg står og skal ha' lavet en menu der afspejler strukturen i en Xml fil:

<?xml version="1.0" encoding="utf-8" ?>
<Config xmlns="http://tempuri.org/ConfigurationData.xsd">
<modulesMenu name="Moduler">
  <desktopmodule>
    <moduleId>01</moduleId>
    <displayName>MenuItem 1</displayName>
  </desktopmodule>
  <desktopmodule>
    <moduleId>02</moduleId>
    <displayName>MenuItem 2</displayName>
  </desktopmodule>
  <menuItem name="SubMenu">
    <desktopmodule>
      <moduleId>01</moduleId>
      <displayName>MenuItem 1</displayName>
    </desktopmodule>
    <desktopmodule>
      <moduleId>03</moduleId>
      <displayName>MenuItem 3</displayName>
    </desktopmodule>
    <desktopmodule>
      <moduleId>04</moduleId>
      <displayName>MenuItem 4</displayName>
    </desktopmodule>
    </menuItem>
    <desktopmodule>
      <moduleId>05</moduleId>
      <displayName>MenuItem 5</displayName>
    </desktopmodule>
</modulesMenu>
</Config>

Menuen skulle altså gerne hedde Moduler, der skulle gerne komme to menupunkter efterfulgte af et menupunkt(SubMenu), som indeholder 3 menupunkter og til sidst et menupunkt i "roden".

Xml filen sendes over en webservice og kilent siden, der skal bygge menu'en modtager følgende...

[WebMethod(Description="Test")]
public XmlNode GetModulesXml(string path)
{           
  XmlDocument modulesXmlDoc = new XmlDocument();
 
  modulesXmlDoc.Load(path);
           
  XmlNode rootNode = modulesXmlDoc.DocumentElement;
           
  return rootNode;
}

Er der nogen der kan hjælpe med, hvordan man løber denne rootNode igennem for at tafe fat om desktopmodulerne så man kan opbygge menustrukturen men menupunkter og undermenupunkter ??
Avatar billede dr_chaos Nybegynder
22. januar 2007 - 09:12 #1
Skal menuen opbygges som et treeview ?
eller ?
Avatar billede jhansen31 Nybegynder
22. januar 2007 - 09:19 #2
Jep...
Avatar billede dr_chaos Nybegynder
22. januar 2007 - 09:54 #3
Du kan bruge noget i denne stil:
  <asp:XmlDataSource ID="test" runat="server" OnLoad="test_load" ></asp:XmlDataSource>
    <asp:Button ID="Button2" runat="server" Text="Button virker ikke" OnClientClick="BuildJavaString('-1');" /> 
    <asp:TreeView runat="server" ID="testTreeview" AutoGenerateDataBindings="false" DataSourceID="test"  ExpandDepth="3"
          MaxDataBindDepth="3">
    <Databindings>
        <asp:TreeNodeBinding DataMember="Config" Text="Config"  />
        <asp:TreeNodeBinding DataMember="modulesMenu" Text="modulesMenu"  />
        <asp:TreeNodeBinding DataMember="desktopmodule" name="desktopmodule" />
    </Databindings>
    </asp:TreeView>
Avatar billede dr_chaos Nybegynder
22. januar 2007 - 09:55 #4
I cb laver du denne metode:
protected void test_load(object sender, EventArgs e)
    {
        XmlDocument xd = new XmlDocument();
        xd.Load(Server.MapPath("XMLFile4.xml"));
        XmlDataSource xds = sender as XmlDataSource;
        xds.Data = xd.InnerXml;

    }

i stedet for loadxml file henter du din xml fra din webmetode.
Avatar billede dr_chaos Nybegynder
22. januar 2007 - 09:56 #5
Men for at få det fulde udbytte af alt det her bør du nok ændre din xml.
<modulesMenu name="Moduler">
  <desktopmodule moduleId="01" displayName="1" >
</modulesMenu>
Avatar billede dr_chaos Nybegynder
22. januar 2007 - 09:57 #6
Ellers skal du gøre det ved en custom metode
Avatar billede jhansen31 Nybegynder
29. januar 2007 - 10:43 #7
Tak for hjælpen, smid et svar.
Avatar billede dr_chaos Nybegynder
29. januar 2007 - 10:45 #8
svar :)
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