Autor Beitrag
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mo 04.07.16 08:53 
Guten Morgen,

ich habe ein Problem mit einer DataGridViewCheckBoxColumn. Ich kriege es nicht hin, diese mit true-Werten zu füllen, sodass die Zellen dann Checked sind.
Hier mein Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    //CheckBox-Column erzeugen
    DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
    checkColumn.Name = "...";
    checkColumn.HeaderText = "...";
    checkColumn.ValueType = Type.GetType("System.bool");
    checkColumn.TrueValue = true;
    checkColumn.FalseValue = false;
    this.dataGridView.Columns.Add(checkColumn);

    foreach(DataGridViewRow row in this.dataGridView.Rows)
        row.Cells[2].Value = true;

Weiß jemand wie's geht? Dachte eigentlich mit TrueValue und FalseValue müsste das gehen :nixweiss:

Danke und Gruß
Julian

EDIT: Ich wollt nur anmerken, das danach in den Cells[2].Value auch true drinsteht, nur das Häkchen in der CheckBox wird nicht angezeigt.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 04.07.16 09:14 
In welcher Methode steht dein Code, schon im Konstruktor? Verlagere ihn (zumindestens die Schleife) mal in das Form.Load- oder Form.Shown-Ereignis (denn dann gibt es erst das Handle des DGV).

PS: Den Typen kannst du einfacher mittels typeof(bool) setzen.

Für diesen Beitrag haben gedankt: erfahrener Neuling
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mo 04.07.16 09:19 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
In welcher Methode steht dein Code, schon im Konstruktor? Verlagere ihn (zumindestens die Schleife) mal in das Form.Load- oder Form.Shown-Ereignis (denn dann gibt es erst das Handle des DGV).

Ne das hab ich in einer extra Methode (ich lade erst Daten aus einem Excel-File und aus diesen Daten wird dann u.a. das DataGridView erzeugt).

Zitat:
PS: Den Typen kannst du einfacher mittels typeof(bool) setzen.

Danke werd ich mir merken
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 04.07.16 09:36 
Vllt. habe ich mich etwas ungenau ausgedrückt - ich meinte von welcher Codestelle aus wird dein obiger Code ausgeführt (ob nun direkt oder indirekt in einer eigenen Methode spielt dabei ja keine Rolle)?
Läuft das Programm dann schon und der Anwender verwendet einen Button, welcher dann das DataGridView und dessen Column erstellt oder passiert dies schon direkt beim Programmstart?
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mo 04.07.16 09:49 
Also das Programm läuft dann schon und wird über den 'Daten aus Excel-Datei lesen'-Button ausgelöst (nach dem die Daten geladen wurden). Was ich auch komisch fand (aber eigntl nichts damit zu tun haben müsste), dass vor der foreach-Schleife der ColumnIndex 2 war
index2

und in der Schleife war er 0

index0.

Ein Ansprechen über den ColumnNamen hat auch nichts genützt.
Einloggen, um Attachments anzusehen!
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mo 04.07.16 10:10 
Ok hab die Lösung gefunden.
Wenn man
ausblenden C#-Quelltext
1:
2:
checkColumn.CellTemplate.Value = true;
checkColumn.CellTemplate.Style.NullValue = true;
auf true setzt, sind die checkBoxen von Anfang an gechecked. Die true-Werte für die einzelnen Zellen muss man aber trotzdem noch einfügen.