【问题标题】:Display hierarchical XML data using DataGrid使用 DataGrid 显示分层 XML 数据
【发布时间】:2010-11-12 01:45:53
【问题描述】:

我有一个如下所示的 XML 文件

<root>
  <child1>
    <grandchild1>
       <greatgrandchild1>
       </greatgrandchild1>
       <greatgrandchild2>
       </greatgrandchild2>
       ...
    </grandchild1>
    <grandchild2>
    </grandchild2>
    <grandchild3>
    </grandchild3>
    ...
  </child1>
  <child2>
    <grandchild1>
    </grandchild1>
    <grandchild2>
    </grandchild2>
    <grandchild3>
    </grandchild3>
    ...
  </child2>
  <child3>
    <grandchild1>
    </grandchild1>
    <grandchild2>
    </grandchild2>
    <grandchild3>
    </grandchild3>
    ...
  </child3>
  ...
</root>

每个子节点都有不同的名称。我需要以下列方式显示此 XML:

每个子节点都显示为Expander。该子节点的所有孙子节点都放置在该扩展器内。每个孙子及其子孙都应分组,并应具有背景颜色。下一个孙子及其子孙应该有一个备用颜色背景。

整个数据有两列。因此,选择显示此数据的控件应该能够支持多列。

我在想DataGrid。但是我不能使用它的内置功能,因为我不能进行数据绑定。我需要以编程方式将项目添加到DataGrid。请让我知道如何解决这个问题。任何帮助是极大的赞赏。

【问题讨论】:

标签: wpf templates datagrid grid


【解决方案1】:

一旦按照 Ben 的说明清理了 XML - 我发现处理分层 XML 数据的最简单方法是将其加载到 DataSet 对象 (DataSet.ReadXML()) 中。

然后您可以将 DataSet 和您想要的特定 DataTable 绑定到您的网格控件。

【讨论】:

    【解决方案2】:

    这真的不是 XML。每个元素都是不同的类型,因为每个元素的名称都不同。有没有办法将您的数据转换为格式正确的 XML?例如:

    <root>
      <child name="name1">
        <grandchild name="name11">
          <greatgrandchild name="name111"/>
          <greatgrandchild name="name112"/>
        </grandchild>
        <grandchild name="name12"/>
      </child>
      <child name="name2">
        <grandchild name="name21"/>
        <grandchild name="name22"/>
      </child>
    </root>
    

    注意这是一系列相同类型的元素,具有属性和子元素。 w3schools 有一套很好的 xml 教程。 com.

    如果您可以将数据转换为正确的 XML,那么您可能会非常轻松地按照您的意愿显示数据。您可以使用 xml 数据提供程序并直接绑定到 xml,您可以使用 xml 序列化轻松地将数据加载到一系列对象和集合中,您也可以将其加载到 XmlDocument 中并以这种方式进行操作。如果你自己编写这个 xml,那么你可能会花更少的时间重新格式化数据,而不是试图找到一种方法将你奇怪的 xml 粘贴到你的程序中。

    修复 xml 后,这里有另一个类似问题的帖子Fill datagrid or listview from XML file

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-28
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多