2013-05-28 63 views
0

嗨,大家好,我在asp.net中的treeview控件有问题。我想填充一个XML文件,但asp.net中的树视图不同于窗体树形视图控件:/如何使用代码填充ASP.NET TreeView?

我的树视图的名称是treeview ...我没有在文件夹中的xml我创建一个xml字符串,并使用它,但在这个例子中,我只想测试如何我可以用代码填充这个treeview。我怎么能用我的方法做到这一点?

这里是我的代码:

XElement doc = XElement.Load("~/App_Data/test_xml.xml"); 

      TreeNode Feature; 
      TreeNode User; 
      foreach (XElement state in doc.Descendants("FEATURE")) 
      { 
       Feature = treeview.Nodes.Add(state.Attribute("NAME").Value); 
       foreach (XElement region in state.Descendants("USER")) 
       { 
        User = 
         Feature.Nodes.Add(region.Attribute("NAME").Value); 
        foreach (XElement area in region.Descendants("NAME")) 
        { 
         User.Nodes.Add(area.Attribute("NAME").Value); 
        } 
       } 
      } 

我的XML例子:

<?xml version="1.0" encoding="UTF-8"?> 
<LM-X STAT_VERSION="3.32"> 
    <LICENSE_PATH TYPE="NETWORK" HOST="Server002" SERVER_VERSION="4.4.4" UPTIME="53 day(s) 21 hour(s) 10 min(s) 50 sec(s)"> 
    <FEATURE NAME="GlobalZoneEU" VERSION="12.0" VENDOR="ALTAIR" START="2013-03-26" END="2014-03-31" USED_LICENSES="111720" TOTAL_LICENSES="147000" SHARE="CUSTOM ,VIRTUAL"> 
     <USER NAME="SYSTEM" HOST="Server1" IP="" USED_LICENSES="2000" LOGIN_TIME="2013-04-17 12:42" CHECKOUT_TIME="2013-04-17 12:42" SHARE_CUSTOM=""/> 
     > 
     <USER NAME="Admin" HOST="Server1" IP="" USED_LICENSES="720" LOGIN_TIME="2013-04-17 12:44" CHECKOUT_TIME="2013-04-17 12:44" SHARE_CUSTOM=""/> 
     > 
     <USER NAME="Test.A" HOST="4327" IP="" USED_LICENSES="21000" LOGIN_TIME="2013-05-21 07:52" CHECKOUT_TIME="2013-05-21 07:52" SHARE_CUSTOM=""/> 
     > 
     <USER NAME="Test.B" HOST="4327" IP="" USED_LICENSES="6000" LOGIN_TIME="2013-05-21 07:54" CHECKOUT_TIME="2013-05-21 07:54" SHARE_CUSTOM=""/> 
     > 
     <USER NAME="Test.C" HOST="4970" IP="" USED_LICENSES="21000" LOGIN_TIME="2013-05-21 08:15" CHECKOUT_TIME="2013-05-21 08:15" SHARE_CUSTOM=""/> 
    </FEATURE> 
    <FEATURE NAME="HWAIFPBS" VERSION="12.0" VENDOR="ALTAIR" START="2013-03-26" END="2014-03-31" USED_LICENSES="0" TOTAL_LICENSES="2147483647" SHARE="CUSTOM ,VIRTUAL"/> 
    <FEATURE NAME="HWAWPF" VERSION="12.0" VENDOR="ALTAIR" START="2013-03-26" END="2014-03-31" USED_LICENSES="0" TOTAL_LICENSES="2147483647" SHARE="CUSTOM ,VIRTUAL"/> 
    <FEATURE NAME="HWAcuconsole" VERSION="12.0" VENDOR="ALTAIR" START="2013-03-26" END="2014-03-31" USED_LICENSES="0" TOTAL_LICENSES="2147483647" SHARE="CUSTOM ,VIRTUAL"/> 
    </LICENSE_PATH> 
</LM-X> 
+0

你能得到它的工作以下为指导:http://forums.asp.net/t/1125635.aspx –

回答

1

您可以使用XmlDataSource杰里米建议或更改代码如下

XElement doc = XElement.Load("~/App_Data/test_xml.xml"); 
TreeNode root = new TreeNode("FEATURES"); 
foreach (XElement state in doc.Descendants("FEATURE")) 
{ 
    TreeNode feature = new TreeNode(state.Attribute("NAME").Value); 
    foreach (XElement region in state.Descendants("USER")) 
    { 
     TreeNode user = new TreeNode(region.Attribute("NAME").Value); 
     foreach (XElement area in region.Descendants("NAME")) 
     { 
      user.ChildNodes.Add(new TreeNode(area.Attribute("NAME").Value)); 
     } 
     feature.ChildNodes.Add(user); 
    } 
    root.ChildNodes.Add(feature); 
} 
treeview.Nodes.Add(root); 
+0

我得到FEATURE节点但不是USER节点:/ – Tarasov

+0

@Tarasov根据给定的XML,你将得到用户节点,但不低于这个,因为没有用户节点 – Damith

+0

确定它的工作原理......你知道我如何使用点击事件,如果我点击树状结构中的一个节点,并希望这个值? – Tarasov