【问题标题】:Save data from DataGridView in C# with WinForms使用 WinForms 在 C# 中保存 DataGridView 中的数据
【发布时间】:2013-03-15 00:05:11
【问题描述】:

我有两个 DataGridView,一个非常简单,一个更复杂,具有不同的列类型。 我的想法是将数据存储到 XML 并在重新启动时从文件中加载。 简单的没问题(dgvAccounts就是DataGridView):

   DataTable dtusers = new DataTable("Users");
   DataColumn col1 = new DataColumn("ID");
   DataColumn col2 = new DataColumn("Key");
   dtUsers.Columns.Add(col1);
   dtUsers.Columns.Add(col2);
   if (File.Exists("user.xml"))
         dtUsers.ReadXml("user.xml");
   dgvAccounts.DataSource = dtUsers;     
   ....
   dtUsers.WriteXml("user.xml");  

但在另一个 DataGridView 上,我喜欢从 DataSource 获取的 DataTable 永远为空(dgvActions 是 DataGridView):

   DataGridViewTextBoxColumn dgvcolA5 = new DataGridViewTextBoxColumn();
   DataGridViewComboBoxColumn dgvcolA6 = new DataGridViewComboBoxColumn();
   dgvActions.Columns.Add(dgvcolA5);
   dgvActions.Columns.Add(dgvcolA6);
   DataTable dtActions = (DataTable)dgvActions.DataSource;
   dtActions.WriteXML("actions.xml");

我也尝试提前创建一个 DataTable 并将其添加为 dgvActions.DataSource 但结果始终相同。

那么请有人帮我为 DataGridView 创建一个 DataTable 或建议任何其他方式来存储和加载数据?

谢谢

安德烈

【问题讨论】:

    标签: c# xml winforms datagridview datatable


    【解决方案1】:

    如何先设置数据表,然后像第一个示例中那样将其设置为数据源(这样您就不会从数据源中获取空数据表):

       DataTable dtActions = new DataTable();
       //Set DataTable columns here
       dtActions.WriteXML("actions.xml");
       dgvActions.DataSource = dtActions;
    

    【讨论】:

    • 我也试过了,但如果我将列直接添加到 DGV,它就没有效果。此外,我尝试将完全相同的 olumn 名称添加到 DT - 如果我在编辑之前将其绑定或在尝试保存之前尝试获取它,则 DataTable 永远不会为空。
    • 您可以将 DGV AutoGenerateColumns 属性设置为 true 吗?然后您只需要在DataTable 上创建列,并且在您设置DataSource 时它应该转移到 DGV
    • 如果我将其设置为 true,就没有机会了。只有当我这样做并向 DataTable 添加列时——在这种情况下,我在 DT 列旁边有 DGV 列。
    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多