Forums Neueste Beiträge
 

DataGridViewComboBoxColumn aktualisieren

08/06/2010 - 12:10 von Birger Schott | Report spam
Hai,

ich habe folgendes Problem mit einen gebundenen DataGridView mit einer
DataGridViewComboBoxColumn!

Diese habe ich folgender weise gebunden

DataSet ds = new DataSet();
BindingSource bs = new BindingSource();
DataGridView dgv;
System.Windows.Forms.DataGridViewComboBoxColumn Artikel;

Artikel.DataSource = ds.Tables["Tabelle"]; //Die ArtikelTabelle
Artikel.DisplayMember = "Name"; // der Artikelname
Artikel.ValueMember = "IDTabelle"; //Id des Artikel
Artikel.DataPropertyName = "IDMasterTabelle"; // Die Stückliste

bs.DataSource = ds;
bs.DataMember = "MasterTabelleTabelle";

this.dgv.DataSource = bs;
this.dgv.DataMember = "relID";

was bis hier auch einwadfrei funktioniert.

Ändere ich ,erweitern oder löschen eines Artikel, die zugrunde liegende
Tabelle über einen
Dialog

private void btnArtikel_Click(object sender, EventArgs e)
{
ArtikelDialog __artikeldlg = new ArtikelDialog();
if (__artikeldlg.ShowDialog() == DialogResult.OK)
{
//ab hier ist die geànderte Tabelle im DataSet ds vorhanden
bs.ResetBindings(false);

//habe ab hier folgendes probiert alles ohne Erfolg
//Artikel.DataSource = ds.Tables["Tabelle"]; //Die ArtikelTabelle
//oder
//Artikel.DataSource = ds.Tables["Tabelle"]; //Die ArtikelTabelle
//Artikel.DisplayMember = "Name"; // der Artikelname
//Artikel.ValueMember = "IDTabelle"; //Id des Artikel
//Artikel.DataPropertyName = "IDMasterTabelle"; // Die Stuckliste
// führt zu einer Fehlermeldung
//oder
// bs.EndEdit()
//oder
//this.dgv.DataSource = bs;
//this.dgv.DataMember = "relID";
// alle auch miteinader oder in verschiedene Kombinationen

//und sonst noch einige verzweifelte Versuche
}
}

ist die Tabelle „ds.Tables["Tabelle"]; //Die ArtikelTabelle“ zeigt mir
der Debugger die Änderungen an. Aber die ComboBox hat von den Änderungen
nichts mitbekommen.

Mein Frage ist nun
Wie kann ich meine Combox dazu bringen die Änderungen(die geànderte
Tabelle) neu einzulesen?

Für eure Mühe bedanke ich mich im Voraus

Birger
 

Lesen sie die antworten

#1 Peter Fleischer
08/06/2010 - 12:29 | Warnen spam
"Birger Schott" <"birgerS[àt]gmx.de"> schrieb im Newsbeitrag
news:unp#
...
Artikel.DataSource = ds.Tables["Tabelle"]; //Die ArtikelTabelle
...
ist die Tabelle „ds.Tables["Tabelle"]; //Die ArtikelTabelle“ zeigt mir
der Debugger die Änderungen an. Aber die ComboBox hat von den Änderungen
nichts mitbekommen.

Mein Frage ist nun
Wie kann ich meine Combox dazu bringen die Änderungen(die geànderte
Tabelle) neu einzulesen?



Hi Birger,
wenn du nicht das gleiche Tabellenobjekt nutzt, dann wird die Änderung auch
nicht angezeigt. Mit der Zuweisung der DataSource wird der Verweis auf
ds.Tables("Tabelle") kopiert und von "Artikel" genutzt. Wenn due ein neues
DataTable-Objekt mit Namen "Artikel" erstellst und in "ds" einbindest, dann
erfàhrt "Artikel" davon nichts. Du solltest also das gleiche
DataTable-Objekt auch in deiner Dialog-Form nutzen.

Weiterhin ist Deine Benamung irreführend. Master-Tabelle ist die
Nachschlagtabelle, die als Liste an die ComboBox-Spalte gebunden wird.
Child-Tabelle ist die Tabelle, die an das Grid zur Anzeige gebunden ist.


Viele Gruesse

Peter

Ähnliche fragen