我有一个数据表填充了来自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();
当我运行应用程序时,它只显示数据表中第一列的数据。我是否需要一个循环来处理列,或者我只是错过了一步?
答案 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);
}
谢谢大家的回复!