2009-09-14 6 views
1

J'ai un DataGridView avec son ensemble de sources de données dans une liste. Lorsque je ajoute à cette liste, la modification n'est pas récupérée par DataGridView. Le code exact pour l'initialisation est:DataGridView - l'ajout à DataSource ne reflète pas les modifications du contrôle

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN; 
dataGridView1.AllowUserToAddRows = true; 
dataGridView1.AllowUserToDeleteRows = true; 
dataGridView1.AllowUserToOrderColumns = true; 
dataGridView1.AllowUserToResizeColumns = true; 
dataGridView1.AllowUserToResizeRows = false; 

Et le code exact pour la mise à jour est la source de données:

SimpleOfx.OFXBANKMSGSRSV1STMTTRNRSSTMTRSBANKTRANLISTSTMTTRN transaction = new SimpleOfx.OFXBANKMSGSRSV1STMTTRNRSSTMTRSBANKTRANLISTSTMTTRN(); 
document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN.Add(transaction); 

Comme vous pouvez le constater, les noms de classe ont été générés en utilisant xsd.exe, SimpleOfx est l'espace de noms de la classe générée, STMTTRN est une liste, le document est une instance d'une classe qui contient un fichier XML désérialisé, et m_statement est ce fichier.

Une idée de ce que je dois faire pour que le contrôle reflète les modifications apportées au DataSource après qu'il a été défini? J'ai essayé de le régler à nouveau, mais cela ne fonctionne pas. J'ai essayé de «rafraîchir» et toutes sortes d'autres méthodes qui semblent prometteuses mais elles n'ont pas fonctionné non plus. Merci d'avance :)

EDIT: Un peu plus d'informations; Je peux entrer dans le code et jeter un coup d'oeil à la fois à mon membre 'document' et à la propriété 'DataSource' de dataGridView1; tous les deux ont le bon nombre d'éléments, y compris ceux construits par défaut à la fin, mais le contrôle ne dessine toujours pas ces lignes supplémentaires. DataSource de DataGridView semble connaître le nouveau contenu de la liste, mais ne les dessine pas.

Répondre

4

Je résolu ce problème en changeant STMTTRN d'une liste à une BindingList - Liste semble avoir un comportement très étrange quand utilisé comme DataSource (voir mon autre question récente, qui est résolue de la même manière).

Il est dans le code généré, mais je avais déjà changé d'un tableau à une liste si BindingList est à peine aucun problème supplémentaire :)

1

Vous devrez rebind après avoir ajouté à la liste de sources de données, donc refais:

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN; 
+0

J'ai essayé exactement cela, et il ne fonctionne pas. –