J'ai un formulaire avec DataGridView et je souhaite charger des données d'un fichier XML dans la grille à l'aide d'un DataSet. Je crée un DataSet, charger le XML dans le DataSet, puis attribuez-lui le DataSet à la propriété DataSource de la grille:Affichage de données XML dans DataGridView à l'aide de 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";
}
Cependant les données n'affiche pas dans la grille. J'ai 8 lignes dans le fichier XML et la grille crée 8 lignes bien, mais ils sont tous vides. Quand je débogue le code je peux voir les données dans le DataSet ainsi il semble le charger correctement à ce point, juste ne l'affichant pas dans la Grille. Le fichier XML que j'utilise est ci-dessous - il est bien formé et valide contre son schéma:
<?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>
Quelqu'un peut-il me dire ce que je pourrais faire mal? Je suis nouveau à .NET 3.5 et le DataGridView et je ne sais pas comment les événements sont déclenchés quand une grille est remplie, s'il devrait y avoir du code dans n'importe lequel de ces événements, etc. Toute aide appréciée.
Cheers, Ciaran.
Salut Chris - Je l'ai déjà ajouté les colonnes au moment de la conception et ils apparaissent au moment de l'exécution, juste qu'ils sont vides. Est-il préférable d'ajouter des colonnes au moment de la suppression? J'ai même nommé les colonnes pour faire correspondre les éléments dans le fichier XML (pas sûr si cela est nécessaire?) –
Ok, j'ai commenté la ligne dataGridViewStatement.AutoGenerateColumns = false; et la grille montre maintenant 8 lignes avec 7 colonnes vides puis 7 colonnes avec les données du XML, donc je suppose que cela fonctionne à moitié maintenant. Est-ce que cela signifie que je ne devrais pas définir les colonnes au moment du design? Existe-t-il un moyen d'obtenir les données affichées dans les colonnes définies au moment du design? –
Eh bien dans mon cas, j'ajoute les colonnes à l'exécution par réflexion, mais j'ai une grille de données qui peut afficher différentes informations en fonction de la DLL chargée. – ChrisF