2015-06-02 94 views
0

我已经创建从Visual Studio中的界面构建一个DataGridView。 DataGridView有三列,其中一列包含复选框。 当应用程序启动时的datagridview的应该是空的(除了报头)。这就是为什么DataGridView目前没有DataSource。我试图将其导出到XML文件,以便下次打开该应用程序时可以导入该文件。导入/导出的DataGridView与格式C#

我试过许多方法来导出和导入我的DataGridView但他们没有工作得很好。有没有适当的方式来导入和导出datagridviews保持格式?

保存在DataGridView为另一种格式比XML还不错,但随着应用程序必须在多台计算机服务器,将所有创建多个文件运行,文件大小要小。

+0

JSON是小的,看看这个解决方案http://stackoverflow.com/questions/17398019/how -to-转换,数据表到JSON-在-C-尖锐 –

回答

2

您可以将网格绑定到一个DataTable,并使用datatable.ReadXml("filename.xml")datatable.WriteXml("filename.xml")

+0

感谢。我已经尝试过这一点,但将网格绑定到数据表时会在单元格中使用复选框时导致问题。 – Berendschot

+0

+1,它工作得很好。 @ Maarten1909我在回答中提供了一个例子,它是如何工作的。如果这仍然没有帮助,你遇到了什么问题? – OhBeWise

1

由于rlee指出,ReadXmlWriteXml应该工作。我将放在一起的最基本的原始示例与单元格中的复选框一起工作得很好。

public partial class Form1 : Form 
{ 
    private DataTable table; 

    public Form1() 
    { 
    this.InitializeComponent(); 

    this.table = new DataTable("Table"); 
    DataColumn col1 = new DataColumn("Check", typeof(bool)); 
    DataColumn col2 = new DataColumn("Text", typeof(string)); 
    this.table.Columns.Add(col1); 
    this.table.Columns.Add(col2); 

    this.table.ReadXml("test.xml"); 
    this.dataGridView1.DataSource = this.table; 
    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
    this.table.WriteXml("test.xml"); 
    } 
} 

然后保存一个名为test.xml一个XML文件,其中.exe文件位于:

<?xml version="1.0" standalone="yes"?> 
<DocumentElement> 
    <Table> 
    <Check>true</Check> 
    <Text>Row 0</Text> 
    </Table> 
    <Table> 
    <Check>false</Check> 
    <Text>Row 1</Text> 
    </Table> 
</DocumentElement>