CurrencManager Probleme beim AddNew()

08/04/2009 - 12:52 von Jens Krampe | Report spam
Hallo Gruppe

Ich habe eine einfache Datenbanktabelle in ein DataTable Objekt geladen
und dieses als Datasource an ein DataGridView angebunden. Für das
Bewegen innerhalb dieser Source verwende ich ein CurrencyManager Objekt.
Wenn ich nun über den CurrencyManager einen neuen Eintrag erstellen
möchte (AddNew()) wird in meinem DataGridView auch eine neue Zeile
erstellt, aber der Zeiger springt nicht zu diesem neuen Datensatz.
Selektiere ich den Datensatz nun manuell wird er zwar im DataGridView
ausgewàhlt (und der Zeiger gesetzt), aber die angebundenen Controls
(TextBox) werden nicht leer sondern behalten die Werte des vorher
angewàhlten Datensatzes. Frage ich die Anzahl der Datensàtze im
CurrencyManager ab (Count) stimmt die Anzahl (inklusive des neuen DS),
aber ich kann nicht die Position darauf setzen.

Bsp: Vor AddNew() Count = 3, Position = 0
Nach AddNew() Count = 4, Position geht aber nur bis auf 3

Was ist da schief gelaufen?

Die Quelle sieht in etwa so aus:

private void FillDataGrid(DataTable Data)
{
dgvData.Datasource = Data;

objCM = (CurrencyManager)dgvData.BindingContext[Data];
}

private void AddNewDS()
{
objCM.AddNew();
}

In einer anderen Tabelle funktioniert dies, da ist aber keine DataTable
angebunden, sondern eine BindingList.

Ich hoffe mir kann wer weiter helfen!

Gruß Jens :-)
 

Lesen sie die antworten

#1 Frank Dzaebel
08/04/2009 - 21:05 | Warnen spam
Hallo Jens,

Ich habe eine einfache Datenbanktabelle in ein DataTable Objekt
geladen und dieses als Datasource an ein DataGridView angebunden. Für
das Bewegen innerhalb dieser Source verwende ich ein CurrencyManager
Objekt. Wenn ich nun über den CurrencyManager einen neuen Eintrag
erstellen möchte (AddNew()) wird in meinem DataGridView auch eine
neue Zeile erstellt, aber der Zeiger springt nicht zu diesem neuen
Datensatz.



Nimm mal:

CurrencyManager cm;
private void btnAddNew1_Click(object sender, EventArgs e)
{
cm = BindingContext[dgv.DataSource,
dgv.DataMember] as CurrencyManager;
cm.AddNew();
MessageBox.Show(cm.Position.ToString());
}

analog:

[Gleicher Zeilen-Inhalt nach Sortieren beim DataGridView]
http://dzaebel.net/DataGridViewSort.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen