我有一个带有DataGridView的表单,我想使用DataSet将XML文件中的数据加载到Grid中。我创建一个DataSet,将XML加载到DataSet中,然后将DataSet分配给Grid的DataSource属性:
private void formAccountHistory_Load(object sender, EventArgs e)
{
// Load the DataSet that represents the offline version of the database.
AccountHistoryDS = new DataSet("TicketAccountHistory");
AccountHistoryDS.ReadXmlSchema("TicketsAccountHistory.xsd");
AccountHistoryDS.ReadXml("TicketsAccountHistory.xml", XmlReadMode.Auto);
AccountHistoryDS.Locale = System.Globalization.CultureInfo.CurrentUICulture;
dataGridViewStatement.AutoGenerateColumns = false;
dataGridViewStatement.DataSource = AccountHistoryDS;
dataGridViewStatement.DataMember = "Line";
}
但是数据不会显示在网格中。我在XML文件中有8行,Grid创建了8行,但它们都是空白的。当我调试代码时,我可以看到DataSet中的数据,所以它似乎正确加载到那一点,只是没有在Grid中显示它。我使用的XML文件如下所示 - 它已经很好地构建并根据其模式进行验证:
<?xml version="1.0" standalone="yes"?>
<TicketsAccountHistory>
<Line>
<colID>03/09</colID>
<colStartEnd>14/01/2009-20/01/2009</colStartEnd>
<colDate>14/01/2009</colDate>
<colType>Period 03/09 - opening balance</colType>
<colDR></colDR>
<colCR></colCR>
<colBalance>0.00</colBalance>
</Line>
<Line>
<colID>03/09</colID>
<colStartEnd>14/01/2009-20/01/2009</colStartEnd>
<colDate>20/01/2009</colDate>
<colType>Sales Invoice (Ref: MRO-S-03/09)</colType>
<colDR>1000</colDR>
<colCR></colCR>
<colBalance>1000.00</colBalance>
</Line>
<Line>
<colID>03/09</colID>
<colStartEnd>14/01/2009-20/01/2009</colStartEnd>
<colDate>20/01/2009</colDate>
<colType>Commission Invoice (Ref: MRO-C-03/09)</colType>
<colDR></colDR>
<colCR>100.00</colCR>
<colBalance>900.00</colBalance>
</Line>
<!-- 5 more rows similar to this -->
</TicketsAccountHistory>
谁能告诉我自己可能做错了什么?我是.NET 3.5和DataGridView的新手,我不知道在填充网格时如何触发哪些事件,如果在任何这些事件中都应该有代码等等。任何帮助都会受到赞赏。
干杯, 夏兰。
答案 0 :(得分:5)
你有声明:
dataGridViewStatement.AutoGenerateColumns = false;
这意味着DataGridView将没有任何列。将其设置为true
或插入一些代码以添加列。
答案 1 :(得分:1)
手动生成列并将它们命名为与XML字段相同时,请尝试以下操作:
For Each col As DataGridViewColumn In dataGridViewStatement.Columns
col.DataPropertyName = col.Name
Next
答案 2 :(得分:0)
当您手动编辑网格中的列时,可以将ColumnName设置为所需的任何名称,但是要设置的重要字段是DataPropertyName,该属性必须与XML中的元素名称匹配。 为了方便起见,我通常将它们都设置为与XML元素名称相同。