2010-06-08 1 views
6

Qualcuno può aiutarmi per favore?Come trovare l'ID di riga da datagridview, dato un valore di riga?

devo trovare il numero di riga da 1 campo selezionato, che ho conservato in un array separato e in modo casuale che sto cercando di ottenere il numero di riga da datagridview

In altre parole: se conosco un valore di colonna per una data riga in una vista datagrid (ad es. per questa riga, FirstName == 'Bud'), come posso ottenere l'ID della riga?

risposta

1

Probabilmente c'è un modo più semplice in cui lo si filtra in qualche modo ma al momento posso solo pensare di scorrerlo attraverso.

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

È possibile utilizzare query LINQ:

 int index = -1; 

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

     index = row.Index; 
+0

io non so l'id cellule ho appena salvate tutte le cellule in un array saprate, casualmente ho scelto da tale matrice e voglio? in quale riga appartiene – user361108

+0

Sì, è giusto. Ma conosci la colonna, e questa query selezionerà la prima riga che ha "Qualche stringa" nella tua colonna. –

0

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

Chiamare il metodo Find del BindingSource e restituirà l'indice della riga corrispondente se c'è è uno. In caso affermativo, indicizzare il BindingSource per ottenere quella riga e aggiornare i campi appropriati. Se non lo è , si chiama il metodo AddNew di BindingSource per creare una nuova riga e impostare i campi appropriati .

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 
    } 
}