数据表值到datagridview,只显示一列数据

时间:2016-08-03 19:18:53

标签: c# datagridview datatable

我有一个数据表填充了来自Web服务的报告。我现在正试图在datagridview中显示数据表。这是我用来构建数据表的代码:

// Create DataTabe to handle the output
DataTable dt = new DataTable();

dt.Clear();
dt.Columns.Add("EmployeeFirstName");
dt.Columns.Add("EmployeeLastName");
dt.Columns.Add("DepartmentName");
dt.Columns.Add("DepartmentCode");
dt.Columns.Add("LocationName");
dt.Columns.Add("DivisionCode");
dt.Columns.Add("EarningName");
dt.Columns.Add("OTHours");
dt.Columns.Add("WorkDate")

填写新数据表:

foreach (ReportRow row in report.Rows)
{
  dt.Rows.Add(string.Join(",", row.ColumnValues));
}

然后我尝试将数据表中的数据绑定到dataGridview:

dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = dt;
dataGridView1.Refresh();

当我运行应用程序时,它只显示数据表中第一列的数据。我是否需要一个循环来处理列,或者我只是错过了一步?

3 个答案:

答案 0 :(得分:0)

是的,因为当您说dt时,您只为dt.Rows.Add(string.Join(",", row.ColumnValues));添加了一个值。您应该执行类似下面的操作(假设ReportRow也具有相同名称的列,例如"EmployeeFirstName",否则相应地更改名称。

foreach (ReportRow row in report.Rows)
{
  DataRow dr = dt.NewRow();
  dr["EmployeeFirstName"] = row["EmployeeFirstName"];
  dr["EmployeeLastName"] = row["EmployeeLastName"];
  dr["DepartmentName"] = row["DepartmentName"];
  //rest of the columns fill

//once all columns filled
dt.Rows.Add(dr);
}

答案 1 :(得分:0)

dt.Rows.Add(string.Join(",", row.ColumnValues)); - >您可以添加单个DataRow项目或一组对象。

在你的电话中,你选择了后者,你要添加一个对象数组,除了你要添加一个单个对象。

string.Join(",", row.ColumnValues)是一个对象。

答案 2 :(得分:0)

睡觉后我发现了将它放入sql表中的问题......我没有考虑到导出到CSV并添加" ,"会影响导出到sql。以下是对问题的代码行的修改:

  foreach (ReportRow row in report.Rows)
  {
      dt.Rows.Add(row.ColumnValues);
  }

谢谢大家的回复!