2011-06-27 20 views

Odpowiedz

36

coś

for (int rows = 0; rows < dataGrid.Rows.Count; rows++) 
{ 
    for (int col= 0; col < dataGrid.Rows[rows].Cells.Count; col++) 
    { 
     string value = dataGrid.Rows[rows].Cells[col].Value.ToString(); 

    } 
} 

przykład bez zastosowania wskaźnika

foreach (DataGridViewRow row in dataGrid.Rows) 
{ 
    foreach (DataGridViewCell cell in row.Cells) 
    { 
     string value = cell.Value.ToString(); 

    } 
} 
+5

Zamiast wpisywać typ wiersza lub komórki, np. "DataGridViewRow" lub "DataGridViewCell", można po prostu napisać "var". –

+1

@kami, jeśli var jest używany, wiersz.Cells zgłasza błąd, ponieważ uważa, że ​​wiersz jest obiektem typu – Ravvy

0

Przykład kodu: Odczyt danych z DataGridView i przechowując je w tablicy

int[,] n = new int[3, 19]; 
for (int i = 0; i < (StartDataView.Rows.Count - 1); i++) 
{ 
    for (int j = 0; j < StartDataView.Columns.Count; j++) 
    { 
     if(this.StartDataView.Rows[i].Cells[j].Value.ToString() != string.Empty) 
     { 
      try 
      { 
       n[i, j] = int.Parse(this.StartDataView.Rows[i].Cells[j].Value.ToString()); 
      } 
      catch (Exception Ee) 
      { //get exception of "null" 
       MessageBox.Show(Ee.ToString()); 
      } 
     } 
    } 
} 
+0

Nie otrzymuję try-catch w twoim przykładzie. Należy przetestować, aby upewnić się, że komórka nie ma wartości NULL przed przetworzeniem. – carlbenson

+0

@Carl Benson - Dzięki, zaktualizowałem swoją odpowiedź. – Bibhu

2
string[,] myGridData = new string[dataGridView1.Rows.Count,3]; 

int i = 0; 

foreach(DataRow row in dataGridView1.Rows) 

{ 

    myGridData[i][0] = row.Cells[0].Value.ToString(); 
    myGridData[i][1] = row.Cells[1].Value.ToString(); 
    myGridData[i][2] = row.Cells[2].Value.ToString(); 

    i++; 
} 

Mam nadzieję, że to pomoże ....

7

Jeśli chcesz, możesz również użyć nazw kolumn zamiast numerów kolumn.

Na przykład, jeśli chcesz odczytać dane z DataGridView w 4. wierszu i kolumnie "Nazwa". Zapewnia mi lepsze zrozumienie, z którą zmienną mam do czynienia.

dataGridView.Rows[4].Cells["Name"].Value.ToString(); 

Mam nadzieję, że to pomaga.

0
private void HighLightGridRows() 
     {    
      Debugger.Launch(); 
      for (int i = 0; i < dtgvAppSettings.Rows.Count; i++) 
      { 
       String key = dtgvAppSettings.Rows[i].Cells["Key"].Value.ToString(); 
       if (key.ToLower().Contains("applicationpath") == true) 
       { 
        dtgvAppSettings.Rows[i].DefaultCellStyle.BackColor = Color.Yellow; 
       } 
      } 
     }