【问题标题】:Save datatable as user setting将数据表保存为用户设置
【发布时间】:2010-07-21 00:03:59
【问题描述】:

我目前尝试使用旧的“properties.settings.default.save()”方法将数据表保存为用户设置。

它不起作用。我的设置没有保存。但是,当我尝试将字符串另存为设置时,它确实有效。

所以我真的很想知道为什么它不适用于数据表。保存数据故事会让我做很多事情变得更容易,因此非常感谢您对此提供任何帮助或任何替代解决方案!

【问题讨论】:

  • 您想将整个 DataTable 保存到 XML 文件中吗?我不太关注你想做的事
  • 拜托,你能发布你的代码吗?

标签: c#


【解决方案1】:

我相信我在对来自 ERP 数据库的 DataTable 执行 LINQ 查询时遇到了同样的问题。在对查询结果使用CopyToDataTable() 方法并将其分配给settingTable 设置后,我验证resultTablesettingTable 都不是null,然后我运行了Settings.Default.Save() 方法。但是,当我随后尝试将settingTable 分配给dataTable 变量时,我收到了null 错误。

我通过在运行Settings.Default.Save() 方法之前将settingTable.TableName 属性分配给其默认值(null 字符串)以外的值来解决此问题。

注意:ERP系统真的很慢,我直接用ERP的业务对象查询数据就好了。

【讨论】:

    【解决方案2】:

    您可以将 DataTable 作为 XML 字符串保存到普通的字符串设置中,如下所示:

     StringWriter writer = new StringWriter();
     table.WriteXml(writer);
     Settings.Default.TableXml = writer.ToString();
    

    然后您可以像这样从设置中加载它:

     StringReader reader = new StringReader(Settings.Default.TableXml);
     table.ReadXml(reader);
    

    【讨论】:

      【解决方案3】:

      遗憾的是,上面的解决方案对我不起作用(有一个例外,即缺少根元素)。 我必须做出这些调整。

      创建 XML 字符串:

       StringWriter writer = new StringWriter();
       table.WriteXml(writer, XmlWriteMode.WriteSchema); //WriteSchema
       Settings.Default.TableXml = writer.ToString();
      

      从 Xml 字符串创建数据表

       StringReader reader = new StringReader(Settings.Default.TableXml);
       table.ReadXml(reader);
      

      希望这可以帮助其他有同样问题的用户;)

      【讨论】:

      • 其实这与“设置”类无关。它只是数据表序列化。
      猜你喜欢
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2016-12-27
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      相关资源
      最近更新 更多