Xml 基础设施。超树奇怪的行为
我使用UltraTree方法SetDataBinding来显示xml树结构。Xml是这样的:Xml 基础设施。超树奇怪的行为,xml,data-binding,infragistics,Xml,Data Binding,Infragistics,我使用UltraTree方法SetDataBinding来显示xml树结构。Xml是这样的: <?xml version="1.0" encoding="utf-8"?> <StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document"> <List>
<?xml version="1.0" encoding="utf-8"?>
<StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document">
<List>
<StructElement Name="Number">
<List/>
</StructElement>
<StructElement Name="Author">
<List>
<StructElement Name="Name">
<List>
<StructElement Name="FullName">
<List/>
</StructElement>
<StructElement Name="Adress">
<List/>
</StructElement>
<StructElement Name="Email">
<List/>
</StructElement>
</List>
</StructElement>
</List>
</StructElement>
</List>
</StructDocument>
然后我得到了以下结果:
正如您看到的,缺少“Name”元素子元素的列表。但当我像这样更改xml时(只需更改“Number”和“Author”元素的顺序):
,我得到以下信息:
也就是说,现在我看到了所需的行为,所有xml元素都出现在屏幕上。我想问一下如何在不更改xml的情况下实现这一点?我尝试使用xml文件在一个小样本中重现您的场景,在两种情况下(使用两个xml文件),我都会遇到异常“名为“List”的列已属于此数据表:无法将嵌套表名设置为相同的名称。”(可能是因为我的情况有点不同) 请看附件中的示例,如果您认为我没有复制您的场景,请随意修改此示例并将其还原给我。我很乐意为您研究 同时,最好将您的问题发布在我们的网站上。我们将很乐意为您提供帮助 这是我的测试样本的结果 这是我的XML文件
<?xml version="1.0" encoding="utf-8"?>
<StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document" Description="">
<StructElement Name="Number" Description ="Number of books 100">
</StructElement>
<StructElement Name="Author">
<StructElement Name="Name" Description ="Stephen King">
<StructElement Name="FullName" Description ="Stephen King full name">
</StructElement>
<StructElement Name="Adress" Description ="Stephen King address">
</StructElement>
<StructElement Name="Email" Description ="Stephen King email">
</StructElement>
</StructElement>
</StructElement>
<StructElement Name="Number" Description ="Number of books 20">
</StructElement>
<StructElement Name="Author">
<StructElement Name="Name" Description ="George R. R. Martin">
<StructElement Name="FullName" Description ="George R. R. Martin full name">
</StructElement>
<StructElement Name="Adress" Description ="George R. R. Martin address">
</StructElement>
<StructElement Name="Email" Description ="George R. R. Martin email">
</StructElement>
</StructElement>
</StructElement>
</StructDocument>
我建议在Infragistics论坛上发布这篇文章,以查看行为是否符合预期,以及原因:谢谢,问题在于我的绑定。我从xml创建了自己的数据结构(如:BindingList)。我的案例与此非常匹配:。
<?xml version="1.0" encoding="utf-8"?>
<StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document" Description="">
<StructElement Name="Number" Description ="Number of books 100">
</StructElement>
<StructElement Name="Author">
<StructElement Name="Name" Description ="Stephen King">
<StructElement Name="FullName" Description ="Stephen King full name">
</StructElement>
<StructElement Name="Adress" Description ="Stephen King address">
</StructElement>
<StructElement Name="Email" Description ="Stephen King email">
</StructElement>
</StructElement>
</StructElement>
<StructElement Name="Number" Description ="Number of books 20">
</StructElement>
<StructElement Name="Author">
<StructElement Name="Name" Description ="George R. R. Martin">
<StructElement Name="FullName" Description ="George R. R. Martin full name">
</StructElement>
<StructElement Name="Adress" Description ="George R. R. Martin address">
</StructElement>
<StructElement Name="Email" Description ="George R. R. Martin email">
</StructElement>
</StructElement>
</StructElement>
</StructDocument>
private void Form1_Load(object sender, EventArgs e)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml("..\\..\\XMLFile1.xml");
ultraTree1.DataSource = ds.Tables[0];
ultraTree1.ExpandAll();
ultraTree1.ColumnSettings.AutoFitColumns = Infragistics.Win.UltraWinTree.AutoFitColumns.ResizeAllColumns;
ultraTree1.ColumnSettings.ColumnSets[0].Columns[0].Visible = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
this.Close();
}
}