Datagridview Rows frage

14/12/2008 - 20:01 von Pawel Warmuth | Report spam
Hallo zusammen ,

ich habe ein Datagridview . Dort ist es möglich dem Kunden eine Zelle , den
Zelleninhalt oder eine ganze Reihe zu löschen.

Ich will jetzt eine UNDO Funktion einbauen , mit werten ansich klappt das
Wunderbar .
Ich würde aber gerne als Object eine Row speichern und beim Undo wieder
einfügen

Die Funktion zum speichern in eine List
LisBack.Add(dgvMare.CurrentRow);


so das hier klappt aber leider gar nicht
if ( LisBack[iDc].GetType()== typeof(DataGridViewRow))
{
dgvMare.Rows.Insert(dgvMare.Rows.Count, LisBack[iDc]);
}

hat jmd ne Idee ? stehe grad auf dem Schlauch, grüße
Pawel
 

Lesen sie die antworten

#1 Frank Dzaebel
14/12/2008 - 21:47 | Warnen spam
Hallo Pawel,

ich habe ein Datagridview . Dort ist es möglich dem Kunden eine Zelle
, den Zelleninhalt oder eine ganze Reihe zu löschen.
Ich will jetzt eine UNDO Funktion einbauen, mit werten ansich klappt
das Wunderbar. Ich würde aber gerne als Object eine Row speichern und beim
Undo wieder einfügen



Also eigentlich brauchst Du zunàchst für Änderungen
innerhalb einer Zeile ja gar nichts machen. Die Escape-
Taste funktioniert ja ohne Probleme bei gebundenen
Szenarios.
Nun möchtest Du gelöschte Rows wiederherstellen.
Nun, auch da gibt es eine eingebaute Methode,
indem Du zum Beispiel "DataTable.RejectChanges()"
benutzt. Mal als Beispiel [mit ESC und "STRG-Z" als Undo]:

DataGridView dgv = new DataGridView();
DataTable dt = new DataTable();
MenuStrip ms = new MenuStrip();

private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 3; i++) dt.Columns.Add("Spalte"+i);
for (int i = 0; i < 20; i++) dt.Rows.Add("Eins"+i, "Zwei"+i, "Drei"+i);
dt.AcceptChanges();
BindingSource bs = new BindingSource(dt,null);
dgv.DataSource = bs; this.Width = 400;
Controls.Add(dgv); dgv.Dock = DockStyle.Fill;

ToolStripMenuItem undoItem = ms.Items.Add("Undo")
as ToolStripMenuItem;
undoItem.Click += new EventHandler(UndoItem_Click);
undoItem.ShortcutKeys = Keys.Control | Keys.Z;
Controls.Add(ms);
}

void UndoItem_Click(object sender, EventArgs e)
{
dt.RejectChanges();
}


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

Ähnliche fragen