alexpj - Fr 30.11.18 16:43
Titel: colored rows im DGV
moin...
ich habe ein gebundenes Datagridview und dort Möglichkeiten per Button, Zeilen farbig zu markieren.
Das Ganze wird dann auch so als XML gespeichert und geladen.
Nun gibs da aber auch die Möglichkeit per Button Leerzeilen an der selektierten Zeile einzufügen.
Sobald das DGV allerdings an ein Datatable gebunden ist, werden die styles gelöscht.
Gibs da einen Lösungsweg, die styles im DGV beizubehalten. (ggf ist das Einfügen auch anders Realisierbar?)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| private void newrow() { edit = true; if (dataGridView3.DataSource == null) { dataGridView3.Rows.Insert(row); return; } row = dataGridView3.CurrentCell.RowIndex; DataTable dt = GetDataTableFromDGV(dataGridView3); DataRow toInsert = dt.NewRow(); dt.Rows.InsertAt(toInsert, row); dataGridView3.DataSource = dt; dataGridView3.Update();
if (dataGridView3.Rows.Count - 1 >= row) { dataGridView3.FirstDisplayedScrollingRowIndex = row; dataGridView3.Rows[row].Selected = true; dataGridView3.Rows[row].Cells[0].Selected = true; this.dataGridView3.CurrentCell = this.dataGridView3[0, row]; } dataGridView3.AllowUserToAddRows = true; dataGridView3.Refresh(); } |
alexpj - Mo 03.12.18 12:26
danke für den Hinweis. Nehme ich den (unnötigen) Bezug heraus, wird auch kein Datagridview mehr angezeigt. Funktionieren tut es aber, wenn ich ein neues Datatable erzeuge und als DataSource verwende. Kein Plan, was da abgeht...aber so funktionert es.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| edit = true; row = dataGridView3.CurrentCell.RowIndex; if (dataGridView3.DataSource == null) { dataGridView3.Rows.Insert(row); return; } DataTable ds = (DataTable)dataGridView3.DataSource; DataRow dr = ds.NewRow(); ds.Rows.InsertAt(dr, row); dataGridView3.DataSource = ds;
if (dataGridView3.Rows.Count - 1 >= row) { dataGridView3.FirstDisplayedScrollingRowIndex = row; dataGridView3.Rows[row].Selected = true; dataGridView3.Rows[row].Cells[0].Selected = true; this.dataGridView3.CurrentCell = this.dataGridView3[0, row]; } dataGridView3.AllowUserToAddRows = true; dataGridView3.Refresh(); |