Autor Beitrag
alexpj
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 30.11.18 16:43 
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?)

ausblenden 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;
              //new & unbind???
            if (dataGridView3.DataSource == null) { dataGridView3.Rows.Insert(row); return; }
           
              //int row;
            row = dataGridView3.CurrentCell.RowIndex;
            
              // copy dgc to DataTable          
            DataTable dt = GetDataTableFromDGV(dataGridView3);
            // generate the data insert
            DataRow toInsert = dt.NewRow();
            // insert in the desired place
            dt.Rows.InsertAt(toInsert, row);
            // Set a DataGrid control's DataSource to the DataView.
            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();
        }
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 01.12.18 10:17 
Hallo,

wenn das DGV schon mittels DataBinding verbunden ist, brauchst du nicht jedesmal diese DataSource neu zu setzen.
Entferne also mal
ausblenden C#-Quelltext
1:
2:
dataGridView3.DataSource = dt;
dataGridView3.Update();
alexpj Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
            edit = true;
            //int row;
            row = dataGridView3.CurrentCell.RowIndex;
            //new & unbind???
            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();