Benutzer mit den meisten Antworten
DataTable bearbeiten, DataRow einfügen

Frage
-
Hallo,
ich bräuchte eine Hilfestellung bei folgenden Problem.
Ich habe ein DataGridView, in welches ich eine DataTable lade.
Das hinzufügen neuer DataRows erfolgt jedoch immer am Ende der DataTable.
Nun möchte ich auch die Funktionalität, dass Hinzufügen auch innerhalb der Tabelle funktioniert.
Sprich ich wähle im DataGridView eine Zeile und möchte dann unterhalb eine neue Zeile einfügen. Alle anderen Zeilen unterhalb müssen dann verschoben werden.
Ich bräuchte ein paar Tipps wie ich das umsetze im Code.mfg
Antworten
-
Hi,
Davids Code fügt die neue Zeile nicht am Ende sondern an der aktuellen Position + 1 ein.
Ich würde dir allerdings empfehlen, deine Datenquelle zu abzuändern, dass eine Positionsangabe enthalten ist. Dann musst Du nur einen neuen Eintrag in der Datenquelle erstellen, die Positionsangaben anpassen und die Sortierung deiner Datensätze entsprechend auf dieses Feld legen. Das geht auch über deine DataTable.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 4. Dezember 2015 08:24
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 8. Dezember 2015 12:34
Alle Antworten
-
Hallo,
ich hätte das wie folgt gelöst:
DataTable dt; public int currentRow { get; set; }
private void Form1_Load(object sender, EventArgs e) { dt = new DataTable(); dt.Columns.Add("Vorname"); dt.Columns.Add("Nachname"); dt.Rows.Add("Michael", "Schulzte"); dt.Rows.Add("Oskar", "Knecht"); dt.Rows.Add("Luis", "Walter"); BindingSource bs = new BindingSource(dt, ""); dataGridView1.DataSource = bs; }
private void dataGridView1_MouseDown(object sender, MouseEventArgs e) { DataGridView.HitTestInfo hti; hti = dataGridView1.HitTest(e.X, e.Y); if (hti.RowIndex > -1 && hti.ColumnIndex > -1) { dataGridView1.CurrentCell = dataGridView1.Rows[hti.RowIndex].Cells[0]; currentRow = hti.RowIndex; } }
private void button1_Click(object sender, EventArgs e) { var newRow = dt.NewRow(); newRow["Vorname"] = string.Empty; newRow["Nachname"] = string.Empty; dt.Rows.InsertAt(newRow, currentRow + 1); }
Sobald der User in das DataGridView reinklickt, wird die aktuelle Zeile gespeichert. Sobald man auf den Button1 klickt, wird eine neue DataRow an die Stelle currentRow+1 eingetragen.
- Bearbeitet David Stania Freitag, 27. November 2015 14:44
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 4. Dezember 2015 08:24
-
Hi,
Davids Code fügt die neue Zeile nicht am Ende sondern an der aktuellen Position + 1 ein.
Ich würde dir allerdings empfehlen, deine Datenquelle zu abzuändern, dass eine Positionsangabe enthalten ist. Dann musst Du nur einen neuen Eintrag in der Datenquelle erstellen, die Positionsangaben anpassen und die Sortierung deiner Datensätze entsprechend auf dieses Feld legen. Das geht auch über deine DataTable.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 4. Dezember 2015 08:24
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 8. Dezember 2015 12:34
-
Hallo magkro,
bist Du weitergekommen?
Gruß
Aleksander
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.