2010-06-08 3 views
6

Kann mir bitte jemand helfen?Wie finde ich die Zeilen-ID von datagridview bei einem gegebenen Zeilenwert?

Ich habe die Zeilennummer ausgewählt von 1-Array finden, die ich in einem separaten Array gespeichert und ich versuche, zufällig

Mit anderen Worten: die Zeilennummer von Datagridview zu bekommen: wenn ich einen Spaltenwert kennen Für eine gegebene Zeile in einer Datagridview (zB für diese Zeile, FirstName == 'Bud'), wie bekomme ich die Zeilen ID?

Antwort

1

Es gibt wahrscheinlich einen einfacheren Weg, wo Sie es in irgendeiner Weise filtern, aber im Moment kann ich nur daran denken, es durchzubohren.

int rowIndex = -1; 
foreach(DataGridViewRow row in DataGridView1.Rows) 
{ 
    if(row.Cells(1).Value.ToString().Equals("mystr")) 
    { 
     rowIndex = row.Index; 
     break; 
    } 
} 
// rowIndex is now either the correct index or -1 if not found 
19

können Sie verwenden LINQ-Abfrage:

 int index = -1; 

     DataGridViewRow row = dgv.Rows 
      .Cast<DataGridViewRow>() 
      .Where(r => r.Cells[columnId].Value.ToString().Equals("Some string")) 
      .First(); 

     index = row.Index; 
+0

ich nicht die Zellen-ID weiß, dass ich in einem saprate Array alle die Zelle nur gespeichert, i aus diesem Array zufällig ausgewählt, und ich will? in welcher Zeile gehört es – user361108

+0

Ja, es ist richtig. Aber Sie wissen, Spalte, und diese Abfrage wählt erste Zeile, die "Einige Zeichenfolge" in Ihrer Spalte haben. –

0

Von: http://www.vbforums.com/showthread.php?t=610134

Rufen Sie die Methode Suchen des Binding und es wird die Index der passenden Zeile zurückgeben, wenn es ist eins. Wenn dies der Fall ist, indexieren Sie die BindingSource , um diese Zeile zu erhalten, und aktualisieren Sie die entsprechenden Felder. Wenn nicht vorhanden ist, rufen Sie die AddNew Methode der BindingSource auf, um eine neue Zeile zu erstellen und die entsprechenden Felder festzulegen.

0
//If U Have Add CheckBox To Ur Datagridview 
int rowIndex = -1; 
DataGridViewCheckBoxCell oCell; 
foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    oCell = row.Cells[0] as DataGridViewCheckBoxCell; 
    bool bChecked = (null != oCell && null != oCell.Value && true == (bool)oCell.Value); 
    if (true == bChecked) 
    { 
     rowIndex = row.Index; 
     //ur code 
    } 
} 
Verwandte Themen