2010-08-11 12 views
0

Sur ma page J'ai deux AspxMenu.Click sur Maître Menu valeur correspondante figurera sur Menu enfantComment AspxMenu remplir à partir du fichier xml

syntaxe XML:

<Demo> 
<ClientCompanyId CompanyId="1"> 
<MyMenu> 
<module Text="Basic Settings" ModID="Mod1" ModuleID="1" MenuType="0" Perm="False"> 
<menu Text="Forms" MID="1-1" ParentID="Mod1" MenuDescription="Mod" ModuleID="1" MenuType="0" Perm="False"> 
<Leaf Text="LookUp" MID="1-3" ParentID="1" MenuDescription="" ModuleID="1" MenuType="0" Perm="False" LeafNode="true" TargetUrl="" ModuleMenuID="1-3"> 
</Leaf> 
<submenu Text="Bank Branch" MID="1-4" ParentID="1" MenuDescription="" ModuleID="1" MenuType="0" Perm="False"> 
<Leaf Text="BO Category" MID="1-5" ParentID="4" MenuDescription="" ModuleID="1" MenuType="0" Perm="False" LeafNode="true" TargetUrl="" ModuleMenuID="1-5"> 
</Leaf> 
</submenu> 
</menu> 
<menu Text="Reports" MID="1-2" ParentID="Mod1" MenuDescription="Mod" ModuleID="1" MenuType="0" Perm="False"> 
<Leaf Text="Cheque Type" MID="1-6" ParentID="2" MenuDescription="" ModuleID="1" MenuType="0" Perm="False" LeafNode="true" TargetUrl="" ModuleMenuID="1-6"> 
</Leaf> 
<Leaf Text="Stock Exchange" MID="1-7" ParentID="2" MenuDescription="" ModuleID="1" MenuType="0" Perm="False" LeafNode="true" TargetUrl="" ModuleMenuID="1-7"> 
</Leaf> 
</menu> 
</module> 
</MyMenu> 
</ClientCompanyId></Demo> 

MasterMenu remplir et cliquer Événement:

XDocument loaded = XDocument.Load(@"C:\Menu_Settings.xml"); 

      //XDocument loaded = XDocument.Load(@"C:\Menu_Settings.xml"); 

      var q = from c in loaded.Descendants("module") 
        where (int)c.Attribute("ModuleID") > 0 
        select new 
        { 
         Text = (string)c.Attribute("Text"), 
         ModID = (string)c.Attribute("ModID"), 
         ModuleID = (int)c.Attribute("ModuleID"), 
         MenuType = (int)c.Attribute("MenuType"), 
         Perm = (bool)c.Attribute("Perm") 
        }; 


      foreach (var name in q) 
      { 
       ASPxMasterMenu.RootItem.Items.Add(name.Text,name.ModuleID.ToString()); 


      } 

cliquez sur le maître Menu:

var r= ASPxMenu1.SelectedItem.Name; 

      XDocument loaded = XDocument.Load(@"C:\Menu_Settings.xml"); 

      var q = from c in loaded.Descendants("menu") 
        where (int)c.Attribute("ModuleID") == Convert.ToInt32(ASPxMenu1.SelectedItem.Name) 
        select new 
        { 
         Text = (string)c.Attribute("Text"), 
         ModID = (string)c.Attribute("ModID"), 
         ModuleID = (int)c.Attribute("ModuleID"), 
         MenuType = (int)c.Attribute("MenuType"), 
         Perm = (bool)c.Attribute("Perm") 
        }; 


      foreach (var name in q) 
      { 
       AspxChildMenu.RootItem.Items.Add(name.Text); 


      } 

dans mon XML sous le module tag Menu balise contient plusieurs tag feuille et sous-menu je veux remplir mon AspxChildMenu par les values.How à ?

Répondre

0

essayer cela

var menu = from c in loaded.Descendants("menu") 
        where c.Attribute("ModuleID").Value == "1" 
        select c; 

     var q = from c in menu.Descendants() 
       where c.Name == "Leaf" || c.Name == "submenu" 
       select new 
       { 
        Text = (string)c.Attribute("Text"), 
        ModID = (string)c.Attribute("ModID"), 
        ModuleID = (int)c.Attribute("ModuleID"), 
        MenuType = (int)c.Attribute("MenuType"), 
        Perm = (bool)c.Attribute("Perm") 
       };