C# 数据表c中未显示的行#

C# 数据表c中未显示的行#,c#,C#,我正在尝试将数据从datagridview复制到datatable,以便可以导出到csv文件 这是密码 public DataTable createdatatablefromdgv() { DataTable dsptable = new DataTable(); for (int i = 0; i < dataGridView1.Columns.Count; i++) { DataColumn dspcolumn

我正在尝试将数据从datagridview复制到datatable,以便可以导出到csv文件

这是密码

public DataTable createdatatablefromdgv()
   {
       DataTable dsptable = new DataTable();

       for (int i = 0; i < dataGridView1.Columns.Count; i++)
       {
           DataColumn dspcolumn = new DataColumn(dataGridView1.Columns[i].HeaderText);
           dsptable.Columns.Add(dspcolumn);
       }
       int noOfColumns = dataGridView1.Columns.Count;
       foreach (DataGridViewRow dgvr in dataGridView1.Rows)
       {
           DataRow dataRow = dsptable.NewRow();

           for (int i = 0; i < noOfColumns; i++)
           {
               dataRow[i] = dgvr.Cells[i].Value.ToString();
           }

       }
       return dsptable;
   }
公共数据表createdatatablefromdgv() { DataTable dsptable=新的DataTable(); 对于(int i=0;i
它似乎将数据从网格复制到表中,但当我返回datatable时,所有列都没有行,在为数据表的列指定值后,您没有将dataRow添加到数据表中

public DataTable createdatatablefromdgv()
{
   DataTable dsptable = new DataTable();

   for (int i = 0; i < dataGridView1.Columns.Count; i++)
   {
       DataColumn dspcolumn = new DataColumn(dataGridView1.Columns[i].HeaderText);
       dsptable.Columns.Add(dspcolumn);
   }
   int noOfColumns = dataGridView1.Columns.Count;
   foreach (DataGridViewRow dgvr in dataGridView1.Rows)
   {
       DataRow dataRow = dsptable.NewRow();

       for (int i = 0; i < noOfColumns; i++)
       {
           dataRow[i] = dgvr.Cells[i].Value.ToString();
       }
       dsptable.Rows.Add(dataRow); //Add this statement to add rows to Data Table

   }
   return dsptable;
}
公共数据表createdatatablefromdgv() { DataTable dsptable=新的DataTable(); 对于(int i=0;i以上答案是正确的,但对您遇到此问题的原因进行了一点解释。有人会认为,通过调用
DataTable
上的
NewRow()
,您可以向
DataTable
添加一个新行,然后可以访问它

NewRow
实际做的是为您提供一个
DataRow
的实例,然后您可以使用列名作为列标识符(整数)的apose

这允许您执行类似的操作

DataRow dataRow = dsptable.NewRow();
foreach(DataColumn dc in dsptable.Columns)
{
   dataRow[dc.ColumnName] = dgvr.Cells[dc.ColumnName].Value.ToString()
}
或者,您可以只调用
Rows.Add()
,当您尝试执行
DataRow
时,它会接受一个对象数组或数组

List<string> rowData = new List<string>();
for (int i = 0; i < noOfColumns; i++)
{
   rowData.Add(dgvr.Cells[i].Value.ToString());
}
dsptable.Rows.Add(rowData.ToArray());
List rowData=new List();
for(int i=0;i

这应该可以更简单地解释向数据表添加行:)

没有被调用?+1不想自己回答,认为我只是把问题简单化了,看起来很愚蠢:问这个问题的不是我,我只是说为什么我给了+1:)