Je rencontre des problèmes avec un élément datagridview que j'utilise dans VS2008. Cette DataGridView est en réalité une tabulation dans un élément TabControl. Je lui ai donné 5 colonnes qui ont besoin d'être remplies avec des éléments d'un costum Objet que j'ai fabriqué.Contrôle de DataGridView C# avec une arborescence dans VS2008
Il s'agit essentiellement d'une petite application de bibliothèque qui contient une classe principale et plusieurs classes dérivées de celle-ci. Ils ont tous une méthode ToString() qui représente les données sous la forme d'une chaîne de mots-clés contenant les valeurs nécessaires pour remplir la vue de données.
J'ai seulement besoin du premier 5, certains objets auront jusqu'à 12 mots-clés. Actuellement, chaque fois que j'ajoute un objet, la grille de données ne se remplit pas elle-même, à la place elle ajoute un nombre de colonnes égal au nombre de mots-clés de l'objet spécifique.
Ce que je suis en train de faire est la suivante:
public void libDataGrid_Click(object sender, EventArgs e)
{
if(this.manager.Lib.LibList[0] != null)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
}
this.manager.Lib.LibList
retours et ArrayList, dans lequel tous les objets sont stockés. L'ArrayList peut contenir des éléments de toutes les classes dérivées, mais comme ils sont tous connectés, la représentation sous forme de chaîne contiendra toujours les éléments dont j'ai besoin pour remplir la grille.
Je ne vois pas comment je peux filtrer seulement les cinq premiers et les avoir mis dans les colonnes correctes.
Et une autre chose. Actuellement, je ne peux qu'actualiser le DataGridView en cliquant dessus. Il devrait changer lorsque je passer à l'onglet spécifique sur le Tabcontrol que je veux dire.
J'ai essayé d'ajouter un argument pour SelectedIndexChanged, mais cela ne fait rien vraiment ... Ou du moins, cela ne semble pas faire quoi que ce soit.
Ce que je veux dire est que je commentais le code ci-dessus et a ajouté ceci:
public void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
Ce rafraîchit à chaque fois l'onglet change, peu importe où l'un. J'ai dû supprimer l'instruction if, car elle m'a donné une exception. Probablement parce que la longueur de ArrayList n'est pas définie lors de l'initialisation.
merci, je vais essayer cela. – Vordreller