2016-07-06 11 views
-1

Ich habe ein Datagrid, das 4 Spalten und 244 Zeilen zurückgibt. Die 4. Spalte hat 3 verschiedene Status "Abgeschlossen", "In Bearbeitung", "NotSarted" und zwar alle außerhalb der Zellen. Ich muss jede Zelle in der 4. Spalte durchlaufen und den Wert lesen addiere sie und speicher sie in einem varibale.So muss ich 3 Variablen für die 3 Status haben. Wie mache ich das?nicht in der Lage, Zellen in einer Datagridview durchlaufen

Here is the code that I have. I am not sure if this is the right way to do it or if there is 

ein einfacherer Weg, das Problem dabei ist, nachdem ich laufe sie es mir immer wieder sagte „Objektverweis nicht auf eine Instanz eines Objekts.“

+0

Wenn es eine Datenquelle gibt, wäre es besser, mit dieser – Plutonix

+0

zu arbeiten. Die Zelle hat offensichtlich keinen Wert. Warum sollten Sie die Zellen durchlaufen, wenn Sie nur an ColumnIndex 3 interessiert sind? – LarsTech

+0

deklarieren Sie auch ein "int i", aber Sie erhöhen es nie .. Ich werde etwas veröffentlichen, so dass Sie leicht folgen können, vielleicht werden Sie verstehen, was passiert, indem Sie durch den Code mit dem Debugger gehen .. – MethodMan

Antwort

0

Wenn Sie sie zählen möchten, versuchen Sie

var iRows = dataGridView1.Rows.Cast<DataGridViewRow>(); 
var statusLookup = iRows.ToLookup(r => r.Cells[3].Value + ""); 
int countOfCompleted = statusLookup["Completed"].Count(); 
0

Schauen Sie sich dies an und testen Sie es mit dem Debugger Schritt durch den Code und verstehen Sie, was mit diesem einfachen Beispiel passiert.

foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    foreach (DataGridViewCell cell in row.Cells) 
    { 
     Console.WriteLine(Convert.ToString(cell.Value)); 
    } 
} 
+0

tat es einfach. es geht Zeile für Zeile durch jede Zelle. – john

+0

nimm jetzt dieses Beispiel und ändere die innere foreach so, dass sie zu dem passt, was du versuchst zu tun .. schau auch auf meinen Kommentar darüber, wo du deinen Zähler initialisierst, in deinem Fall sollte 'i' außerhalb der inneren foreach liegen Schleife. – MethodMan

+0

Ok lass mich es versuchen. Will dich wissen lassen, ob es in ein paar funktioniert. Danke – john

1

Sieht aus wie cell.Value null sein, so

if (cell.Value.Equals("Completed")) 

mit

if (cell.Value == "Completed") 

Wie dem auch sei String ersetzen == Operator ist überlastet comparsion von Wert zu machen, so wird dieser Code ausgeführt OK