Etiket Arşivi datagridview datatable kopyalama

DataGridView to DataTable

Merhabalar.

C#’ta DataGridView’in içeriğini DataTable’a kopyalama işlemi için 2 farklı durumla karşılaşabilirsiniz.

1-) Eğer DataGridView’in DataSource’una atama yapılmışsa, aşağıdaki 2 yöntemden herhangi biriyle içeriği kopyalayabiliyoruz(DataGridView’in ismi dgv):

DataTable dt = new DataTable();
 dt=dgv.DataSource as DataTable;

veya

DataTable dt = new DataTable();
 dt=(DataTable)(dgv.DataSource);

2-) DataSource’a atama yapılmadan, mesela formdan veri girişiyle DataGridView’in içeriği dolduruluyorsa DataSource null gelir. Dolayısıyla kopyalama işlemini üstteki yöntemlerle yapamayız. Bu durumda aşağıdaki gibi basit bir metod yazarak işimizi halledebiliriz:

public DataTable DataGridViewToDataTable(DataGridView dgv)
{
   DataTable dt = new DataTable();

   //Column mapping. Benim tüm kolonlarımın tipi string olduğu için buradaki
   //gibi basit bir foreach ile kolonları ekliyorum.
   //Eğer kolonlarınız farklı tipler içeriyorsa muhtemelen tek tek map yapmanız
   //gerekecektir.
   foreach (DataGridViewColumn dc in dgv.Columns)
   {
        dt.Columns.Add(dc.Name, typeof(string));
   }

   foreach (DataGridViewRow dgvRow in dgv.Rows)
   {
        DataRow dr = dt.NewRow();

        for (int i = 0; i < dgv.ColumnCount; i++)
        {
             if (dgvRow.Cells[i].Value != null)
                 dr[i] = dgvRow.Cells[i].Value.ToString();
        }

        //Bendeki DataGridView'e veri girişi yaparken, her satıra yazı yazmaya
        //başladığımda altında otomatik boş bir satır üretiyor.
        //Bu boş satırın DataTable'a eklenmemesi için bu kontrolü koyuyorum.
        if (!string.IsNullOrEmpty(dr[0].ToString()))
             dt.Rows.Add(dr);
        }

        return dt;
}

Kendinize çook iyi davranın.

 
Bu sayfa 1293 kez görüntülendi

It's only fair to share...Share on LinkedInShare on FacebookShare on Google+Tweet about this on TwitterShare on Tumblr