2014-07-15 3 views
-3

Je veux convertir DataGridViewRowCollection-DataRow[] Est-il possible comme:Comment convertir DataGridViewRowCollection à DataRow []

DataRow[] rowarray=(DataRow[])(datagridview.Rows); 

Ou dois-je convertir chaque ligne en utilisant foreach?

+0

Dans quel but? Pensez-vous vraiment que c'est une question? –

+0

Comment avez-vous créé la vue de grille de données? S'il vous plaît fournir plus d'informations ... –

+0

@YuliamChandra Je viens de l'ajouter à partir de Toolbox. –

Répondre

2

Vous devez d'abord le convertir en un DataTable. Puis copiez les lignes dans un tableau DataRow.

DataTable data = (DataTable)(datagridview.DataSource); 

Ensuite, copiez les lignes dans un tableau DataRow.

DataRow[] drArray = new DataRow[data.Rows.Count]; 
data.Rows.CopyTo(drArray, 0); 
+0

N'oubliez pas d'upvote et marquer comme correct. – CathalMF

0

J'espère que cela aidera. Essayez-le et faites le nous savoir.

covertDGVToRowColl void() {

 DataRow[] rowColl = new DataRow[dgTemp.Rows.Count];//dgTemp is the datagridview 



     DataTable dtTable = new DataTable(); 

     foreach (DataGridViewColumn dgvColumn in dgTemp.Columns) 
     { 
      dtTable.Columns.Add(dgvColumn.Name); 

     } 

     DataRow newRow; 
     int i = 0; 
     foreach (DataGridViewRow dRow in dgTemp.Rows) 
     { 
      newRow = dtTable.NewRow(); 
      foreach (DataGridViewColumn dgvColumn in dgTemp.Columns) 
      { 

       newRow[dgvColumn.Name] = dRow.Cells[dgvColumn.Name].Value; 

      } 

      rowColl[i] = newRow; 
      ++i; 
     } 

}

0

Que diriez-vous avec LINQ?

DataRow[] rows = dataGridView1.Rows.Cast<DataGridViewRow>() 
            .Select(r => r.DataBoundItem as DataRowView) 
            .Where(drv => drv != null) 
            .Select(drv => drv.Row) 
            .ToArray();