Domanda

Ho un DataGridView con l'origine dati impostata su un elenco. Quando aggiungo a tale elenco, la modifica non viene rilevata da DataGridView. Il codice esatto per l'inizializzazione è:

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;

E il codice esatto per l'aggiornamento dell'origine dati è:

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

Come probabilmente puoi dire, i nomi delle classi sono stati generati usando xsd.exe, SimpleOfx è lo spazio dei nomi della classe generata, STMTTRN è un elenco, il documento è un'istanza di una classe che contiene un file XML deserializzato e m_statement è quel file.

Qualche idea su cosa devo fare per ottenere il controllo per riflettere le modifiche apportate a DataSource dopo che è stato impostato? Ho provato a impostarlo di nuovo ma non funziona. Ho provato 'aggiorna' e tutti i tipi di altri metodi che sembrano speranzosi, ma non hanno funzionato neanche. Grazie in anticipo :)

EDIT: qualche informazione in più; Posso entrare nel codice e dare un'occhiata sia al mio membro 'document' che alla proprietà 'DataSource' di dataGridView1; entrambi hanno il numero corretto di elementi, inclusi alcuni predefiniti alla fine, ma il controllo non disegna ancora queste righe extra. L'origine dati di DataGridView sembra conoscere i nuovi contenuti dell'elenco, ma non li sta disegnando.

È stato utile?

Soluzione

Ho risolto questo problema cambiando STMTTRN da un Elenco a un Elenco di legami - Elenco sembra avere un comportamento molto strano quando usato come un DataSource (vedi la mia altra domanda recente, che è risolta allo stesso modo).

È nel codice generato, ma l'avevo già cambiato da un array a un elenco, quindi BindingList è a malapena un problema in più :)

Altri suggerimenti

Dovrai ricollegare dopo aver aggiunto all'elenco dell'origine dati, quindi ripetere:

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top