Отображение данных XML в DataGridView с использованием DataSource

2

У меня есть форма с 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, Киран.

Теги:
winforms
datagridview

2 ответа

5
Лучший ответ

У вас есть утверждение:

 dataGridViewStatement.AutoGenerateColumns = false;

Это означает, что DataGridView не будет иметь никаких столбцов. Либо установите его на true, либо вставьте код для добавления столбцов.

  • 0
    Привет Крис - я уже добавил столбцы во время разработки, и они появляются во время выполнения, просто они пусты. Лучше ли добавлять столбцы во время обработки? Я даже назвал столбцы, чтобы они соответствовали элементам в файле XML (не уверен, если это необходимо?)
  • 0
    Хорошо, я закомментировал строку dataGridViewStatement.AutoGenerateColumns = false; и теперь сетка показывает 8 строк с 7 пустыми столбцами, а затем 7 столбцами с данными из XML, так что, я думаю, теперь это работает наполовину. Означает ли это, что я не должен определять столбцы во время разработки? Есть ли способ получить данные, отображаемые в столбцах, определенных во время разработки?
Показать ещё 3 комментария
1

После того, как вы вручную создадите столбцы и назовите их так же, как ваши XML-поля, попробуйте следующее:

    For Each col As DataGridViewColumn In dataGridViewStatement.Columns
        col.DataPropertyName = col.Name
    Next

Ещё вопросы

Сообщество Overcoder
Наверх
Меню