Hallo zusammen,
ich stehe vor folgendem Problem. Ich habe über DevExpress ein Gridview angelegt, dass mit einem View vom SQL-Server gefüllt wird. Soweit so gut.
Jetzt möchte ich in einer Methode in jedem Row den Wert einer Checkbox auslesen (True/False).
Mein Problem ist, dass ich nicht so recht rausbekomme, wie ich die einzelnen Rows ansprechen kann.
Ich habe mir das etwa so vorgestellt, wobei es sich hier zT um Pseydocode handelt:
for( int i = 0; i < rowCount; i++)
{
if( gridView1.row[i].column[3] == True )
{
do.something();
}
}
Weiß jemand, wie ich auf die Rows bzw dann eben auch ouf die entsprechende Column zugreifen kann?
Danke euch
Hallo Buzz Tyca,
ohne viel Ahnung mit DevExpress zu haben:
Was du mit
gridView1.row[i].column[3]
bekommst ist eine Zelle von dem GridView. Du musst noch mitteilen, dass da eine Checkbox ist (cast?). Die kannst du dann prüfen.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Ich bin inzwischen etwas weiter. Ich habe herrausgefunden, wie ich die den Wert ansprechen kann, oder zumindest glaube ich dass. Allerdings bekomm ich immer einen NULL-Wert zurück
if( gridView1.GetRowCellValue(i, "Sperre JN") == True )
Wobei der String "Sperre JN" die Column ansprechen soll. Zumindest habe ich das im DevEx Forum erfahren können. So ganz kann es aber noch nicht stimmen.
Ich vermute, das ich noch einen Befehl anhängen muss, um den tatsächlichen Zustand der Checkbox zu erhalten.
So etwa:
//Pseudocode
if( gridView1.GetRowCellValue(i, "Sperre JN").checkboxClicked == True )
Von welcher Technologie sprechen wir denn hier?
Ist es dir davon ab ggf. nicht einfacher möglich indem du die Daten abrufst, in einer entsprechenden Liste aufbereitest und diese dem Grid zur Verfügung stellt. Dann brauchst Du auch nicht direkt mit dem Grid arbeitetn sondern kannst die Operationen auf der Liste durchführen.
Wieder einen Schritt weiter:
var jaOderNein = gridView1.GetRowCellValue(i, "SperreJN");
Ergo: die Bezeichnung der Column war falsch (Leehrzeichen).
Diese Zeile Funktioniert. Ich bekomme laut Debugger ein true oder ein false in die Variable geschrieben. ABER: Ich bekomme als datentyp "object{bool}" und wenn ich ehrlich bin, habe ich nicht die blasseste Ahnung, wie ich diesen zu einem Bool gecastet kriege, der deinem Vergleich in einer If standhält.
Harter "(bool)" oder weicher "as" Cast und dann durch eine if-Abfrage?
Und schau bitte: [Tipp] Anfängerfehler == true / == false
Beachte t0ms3n's Vorschlag die Abfrage direkt an den Daten zu machen. So gehst du mit den Daten ans UI und von da aus wieder zurück ==> Schlechte Idee.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Ich durfte mich mit dem Grid auch ein wenig auseinandersetzen. Gerne zeige ich dir meine Notizen:
Wert von einer bestimmten Zelle erhalten:
GRIDNAME.GetCellValueByListIndex(0, "SPALTENNAME");
Wert setzen geht dann mit SetCellValueByListIndex....
Alle Rows Value ändern
for (int i = 0; i < GRIDNAME.VisibleRowCount; i++){ GRIDNAME.SetCellValue(GRIDNAME.GetRowHandleByListIndex(i),"SPALTENNAME",true);}
Ich habe noch mehr aufgeschrieben, bezüglich EntityFramework, WPF (Summenerstellung, Displayformat usw.) Ich hoffe ich konnte dir helfen