2016-12-10 2 views
0

ich datasource ein datagridview an einem anderen Form übergeben will,Wie Datagridview Werte zu setzen, um es Datenquelle ist

das ist, wie ich das tun:

private void RationSummary_Click(object sender, EventArgs e) 
{ 
    RationReportFrm RRFrm = new 
    RationReportFrm(HomeDetailsdgv.DataSource, RationFormulationdgv; 

    RRFrm.ShowDialog(); 
} 

und

public RationReportFrm(object RationTotalds, object HomeTotalds) 
{ 
    InitializeComponent(); 


    AnimalPerformancedgv.DataSource = RationTotalds; 
    ProteinValuedgv.DataSource = HomeTotalds; 
} 

Jetzt ist die Frage:

datasource eines dieser datagridviews durch einen datatable gesetzt hat und es geht auf RationReportFrm ohne Probleme, aber einer von ihnen dosen't jede datasource haben und es programmatisch Zellen gefüllt, Wie soll ich es Zellen Werte es datasource, um Übergeben Sie es in eine andere Form?

+0

Für die gridview zu machen, ist, dass jede Datenquelle haben dosen't, hat die Datenraster Ansicht Zellen direkt nicht füllen, sondern erstellen DataTable mit den Zellenwerten und binden Sie das DataGridview an die DataTable. * Hinweis: Verwenden Sie für "Null" -Werte DBNull.Value in der DataTable *. – Graffito

Antwort

0

Ich denke, die bedrängt Art und Weise ein Verfahren datagridview konvertieren zu einem datatable

private DataTable GetDTFromDGV(DataGridView dgv) 
{ 
    var dt = new DataTable(); 

    foreach (DataGridViewColumn column in dgv.Columns) 
    { 
     if (column.Visible) 
     { 
      dt.Columns.Add(); 
      if (column.Name != "") 
      { 
       dt.Columns[column.Index].ColumnName = column.Name; 
      } 
     } 
    } 

    object[] CellValue = new object[dgv.Columns.Count]; 

    foreach (DataGridViewRow row in dgv.Rows) 
    { 
     for (int i = 0; i < row.Cells.Count; i++) 
     { 
      CellValue[i] = row.Cells[i].Value; 
     } 
     dt.Rows.Add(CellValue); 
    } 

    return dt; 
} 
Verwandte Themen