将 XML 文件打开到数据网格视图算法中,数据表不支持从 xml 进行模式推断

Posted

技术标签:

【中文标题】将 XML 文件打开到数据网格视图算法中,数据表不支持从 xml 进行模式推断【英文标题】:Open XML File into data grid view algorithm, datatable doesn't support schema inference from xml 【发布时间】:2014-06-02 16:18:17 【问题描述】:

所以我找到了下面的保存代码,以获取 datagridview 中的内容并将其保存到 xml 文件中。我正在尝试编写相反的功能(打开)。到目前为止,我有下面的代码,它一直有效到行部分。我无法完全弄清楚底部的逻辑来做我需要做的事情。到目前为止,我得到的只是关于类型不匹配的错误。任何帮助,将不胜感激。此外,我在关于 DataTable 的 open 函数中遇到一个奇怪的错误,它不支持来自 Xml 的模式推断。当我尝试读取xml时?

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        
            DataTable dt = new DataTable("itemstable");

            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            
                dt.Columns.Add(dataGridView1.Columns[i].Name, typeof(System.String));
            

            DataRow myrow;
            int icols = dataGridView1.Columns.Count;
            foreach (DataGridViewRow drow in this.dataGridView1.Rows)
            
                myrow = dt.NewRow();
                for (int i = 0; i <= icols - 1; i++)
                

                    myrow[i] = drow.Cells[i].Value;
                
                dt.Rows.Add(myrow);
            

            dt.WriteXml("items.xml");
        

        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        
            DataTable dt = new DataTable("itemstable");

            dt.ReadXml("items.xml");

            for (int i = 0; i < dt.Columns.Count; i++)
            
                dataGridView1.Columns.Add(dt.Columns[i].ColumnName.ToString(), dt.Columns[i].ColumnName.ToString());
            

            DataRow myrow;
            int icols = dt.Columns.Count;
            foreach (DataRow drow in dt.Rows)
            
                myrow = dataGrideView1.NewRow();
                for (int i = 0; i <= icols - 1; i++)
                

                    myrow[i] = drow.Cells[i].Value;
                
                dt.Rows.Add(myrow);
            

【问题讨论】:

【参考方案1】:

我可以使用以下代码打开我的文件:

private void openToolStripMenuItem_Click(object sender, EventArgs e)
    
        DataSet ds = new DataSet();
        ds.ReadXml("items.xml");
        dataGridView1.Columns.Clear();
        dataGridView1.DataSource = ds.Tables[0];           
    

【讨论】:

以上是关于将 XML 文件打开到数据网格视图算法中,数据表不支持从 xml 进行模式推断的主要内容,如果未能解决你的问题,请参考以下文章

如何在不覆盖现有记录的情况下将新行添加到数据表

创建网格线并允许用户打开/关闭网格线视图

以编程方式将新行添加到数据网格视图

使用Umbraco 7.2网格视图,如何将网格视图插入模板?

将数据从网格视图复制到另一个(有没有更好的方法)

如何使用动态 WHERE 子句将网格视图绑定到数据源?