2010-08-11 23 views
0

在我的網頁我有兩個AspxMenu.Click上主菜單通訊員值將顯示兒童菜單上如何AspxMenu填補從XML文件

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填寫並點擊事件:

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()); 


      } 

點擊主菜單:

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); 


      } 
在我的 模塊標籤 菜單下的XML

標籤包含幾個葉和子菜單標籤,我想通過這些values.How來填補我的AspxChildMenu至 ?

回答

0

嘗試了這一點

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") 
       };