DataTable writeToXML未编写未选中框

时间:2015-07-22 11:04:55

标签: c# xml datagridview dataset

我将我的数据表保存到XML文件:

以下是检查所有框时的值:

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Startup_x0020_App_x0020_Table>
    <Program_x0020_Location>5</Program_x0020_Location>
    <Name>5</Name>
    <Delay>true</Delay>
    <StartOnStartup>true</StartOnStartup>
    <KeepAlive>true</KeepAlive>
  </Startup_x0020_App_x0020_Table>
</DocumentElement>

以下是在保存前仅检查其中两个框的值:

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Startup_x0020_App_x0020_Table>
    <Program_x0020_Location>7</Program_x0020_Location>
    <Name>7</Name>
    <Delay>true</Delay>
    <KeepAlive>true</KeepAlive>
  </Startup_x0020_App_x0020_Table>
</DocumentElement>

我的问题是在使用时:

 _dataTable.WriteXml(_xmlLocation);

如何写未经检查的盒子?

因为当我使用:

加载此xml文件时
DataSet dataSet = new DataSet();
dataSet.ReadXml(xml);
MyDataGridView.DataSource = dataSet.Tables[0];

它只显示已检查的复选框列(例如,如果我只保存了一行)

谢谢!

1 个答案:

答案 0 :(得分:0)

您希望查看DataTable中定义的所有列,因此您需要将该DataTable的架构存储在xml中以获得完整的表/列定义。

_dataTable.TableName = "MyLovelyTableName"; // you must have a TableName
_dataTable.WriteXml(_xmlLocation, XmlWriteMode.WriteSchema);

如果可以(你不能顺便)存储单元格的默认值也无济于事。您仍然没有类型信息。 ReadXml应该如何区分null和空字符串?如何将布尔值true与字符串true区分开来?名称列是否应标识为数字或字符串?名称听起来不像是一个数字。无论哪种方式,你需要类型信息来做正确的事情,你不应该依赖类型猜测。