У меня есть форма с DataGridView, и я хочу загрузить данные из XML файла в Grid с помощью DataSet. Я создаю DataSet, загружаю XML в DataSet, а затем присваиваю DataSet свойству DataSource Grid:
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";
}
Однако данные не отображаются в Grid. У меня 8 строк в файле XML, и 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, и я не знаю, как какие события запускаются при заполнении Grid, если в любом из этих событий должен быть код и т.д. Любая помощь оценивается.
Cheers, Киран.
У вас есть утверждение:
dataGridViewStatement.AutoGenerateColumns = false;
Это означает, что DataGridView не будет иметь никаких столбцов. Либо установите его на true
, либо вставьте код для добавления столбцов.
После того, как вы вручную создадите столбцы и назовите их так же, как ваши XML-поля, попробуйте следующее:
For Each col As DataGridViewColumn In dataGridViewStatement.Columns
col.DataPropertyName = col.Name
Next