2009-11-06 47 views
2

我有一個DataGridView的表單,我想使用DataSet將XML文件中的數據加載到Grid中。我創建了一個數據集,將XML加載到DataSet,然後將數據集分配給電網的DataSource屬性:使用DataSource在DataGridView中顯示XML數據

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中的數據,因此它似乎正在將它正確加載到該點,而不是將其顯示在網格中。我使用的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填充時觸發什麼事件,如果這些事件中應該有代碼,等等。

乾杯, Ciaran。

回答

5

你已經得到了聲明:

dataGridViewStatement.AutoGenerateColumns = false; 

這意味着,在DataGridView不會有任何列。將其設置爲true或插入一些代碼以添加列。

+0

嗨克里斯 - 我已經添加了列在設計時,他們似乎在運行時,只是他們是空的。在短時間內添加列是否更好?我甚至命名以匹配XML文件中的元素colums – 2009-11-06 11:43:19

+0

好吧,我註釋掉線 dataGridViewStatement.AutoGenerateColumns = FALSE(不知道這是必要的嗎?); 和電網現在顯示8行與7空白列,然後7列從XML數據,所以我想這是現​​在的一半工作。這是否意味着我不應該在設計時定義這些列?有沒有辦法讓數據顯示在設計時定義的列中? – 2009-11-06 12:10:12

+0

在我的情況下,我通過反射在運行時添加列,但是我有一個數據網格,可以根據加載的dll顯示不同的信息。 – ChrisF 2009-11-06 12:11:46

1

您手動生成列並將它們命名爲您的XML字段相同後,試試這個:

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