【问题标题】:C# Using datasets to read xml files with complex types into datagridviewC#使用数据集将复杂类型的xml文件读入datagridview
【发布时间】:2011-09-02 18:37:59
【问题描述】:

我有这样的代码,可以将 xml 文件读入数据集,然后在 datagridview 中显示数据。
我做了一些谷歌搜索,发现我的数据集在 xml 中读取,但仅在元素的第一个“级别”上。

对于复杂类型来说,它的范围还不够大。但是,它确实将复杂类型或“内联”数据保存到数据集中的下一个表中。 xml 文件都在一个数据集中,但表会根据元素的复杂类型进行拆分。

有什么方法可以将表格组合成一个大表格,这样我就不需要在表格视图之间切换时使用数字上下值了?

对于我的程序,我试图让用户能够更轻松地操作这些 xml 文件。拥有一张大桌子比一堆小桌子要好得多。

代码如下:

    string filename = Address.Text;
    dataGridView1.AutoGenerateColumns = true;
    DataSet dataSet1 = new DataSet("DEFAULT");
    dataSet1.ReadXml(filename, XmlReadMode.Auto);
    bindingSource1.DataSource = dataSet1.Tables[(int)tablenumber.value].DefaultView;
    dataGridView1.DataSource = bindingSource1;
    richTextBox1.Text = filename + " loaded.";
    label2.Text = "File Open: " + filename;

以此类推,但 tablenumber 将从 0 开始。这只是数据集在读取 xml 文件时具有的“第一个”表。此外,我确实有一个与 xml 文件一起使用的架构。我是否还需要读取架构,以便它知道存在复杂类型并根据架构进行读取?

(.NET 3.5 SP1,Visual Studio 2008 C#)

【问题讨论】:

    标签: xml types dataset xsd complextype


    【解决方案1】:

    这个问题是通过使用循环遍历数据集中的每个表并合并它来解决的。这产生了一个更大的数据表,无论模式如何,它都适合 datagridview。有空单元格,这是意料之中的,但这正是我想要的:一个巨大的数据表。

        DataTable dt = new DataTable();
        dt = dataSet1.Tables[0];
        int i;
        for(i = 1; i < dataSet1.Tables.Count; i++)
        {
            dt.Merge(dataSet.Tables[i]);
        }
    

    是我使用的代码。 =)

    编辑:更多信息(限制、示例)Table Merge

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 2016-08-16
      • 2015-02-21
      • 1970-01-01
      相关资源
      最近更新 更多