【问题标题】:Datatable values to datagridview, only showing one columns data数据表值到datagridview,只显示一列数据
【发布时间】:2016-08-03 19:18:52
【问题描述】:

我有一个数据表,其中填充了来自网络服务的报告。我现在正在尝试在 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));
}

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

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

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

【问题讨论】:

    标签: c# datagridview datatable


    【解决方案1】:

    是的,因为当您说 dt.Rows.Add(string.Join(",", row.ColumnValues)); 时,您只向您的 dt 添加了一个值。您应该执行以下操作(假设 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);
    }
    

    【讨论】:

    • 我曾尝试在较早的版本中执行此操作,但出现以下错误:无法使用 [] 将索引应用于“ReportCollector.ReportService.ReportRow”类型的表达式另外,当我导出 dt到一个 csv 文件,我在 dataGridView 中看到我需要的所有数据以及我最初发布的代码。我可能一开始就搞错了。
    【解决方案2】:

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

    在您的调用中,您选择了后者,您正在添加一个对象数组,但您正在添加一个单个对象。

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

    【讨论】:

      【解决方案3】:

      睡觉后我发现将其放入 sql 表的问题...我没有考虑到导出到 CSV 和添加“,”会影响到 sql 的导出。这是对问题代码行的修改:

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

      感谢大家的回复!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-02
        • 2013-11-10
        • 1970-01-01
        • 2018-01-24
        • 1970-01-01
        • 2023-04-02
        相关资源
        最近更新 更多