【问题标题】:Duplicate Columns appearing in data grid数据网格中出现重复的列
【发布时间】:2014-10-30 20:47:09
【问题描述】:

您好,我正在使用以下代码从数据表中填充表单上的网格

      FormDataSet = woutil.GetDataSet;
      dgComments.DataDource = FormDataSet.Tables["COMMENT"];
      foreach(DataColumn col in FormDataSet.Tables["COMMENT"].Columns)
      {
          dgComments.Add(col.ColumnName, col.ColumnName);
      }

COMMENT 表只有 4 列

FormDataSet 在调用代码时是一个空数据集。代码运行后,会出现一个表 COMMENT,表中有 4 列。

dgComments DataGridView 在调用代码之前没有 cloumns 或数据源。

此代码确实在网格中创建了列,但是我期望有 8 列而不是 4 列,因为这些列是重复的。请有人让我知道我做错了什么并建议我如何填充网格以便只显示 4 列。如果我单步执行代码,则 Add 仅被调用 4 次,所以我看不出为什么添加了 8 列??

稍后我将更改代码,以便仅将某些列添加到网格中,但在此阶段我很高兴显示所有列

【问题讨论】:

  • 你把DataGridView.AutoGenerateColumns从默认的true改了吗?
  • 您是否尝试删除 foreach 循环?
  • 您好史蒂夫感谢您的快速响应老实说我只是从工具箱中拖动网格并没有更改任何属性所以如果 AutoGenerateColumns 默认设置为 true 可能是问题所在。不幸的是,我无法检查这一点,因为我目前无法访问它所在的 PC。

标签: c# mysql datagridview


【解决方案1】:

您可能只是忽略了将 AutoGenerateColumns 设置为 false。

如果是这种情况,那么当您在这一行设置 DataSource 属性时:

dgComments.DataSource = FormDataSet.Tables["COMMENT"];

.Net 会自动为您生成列。

当您遍历表并根据表中的列添加列时,您正在复制它们。如果您想手动控制列,请尝试以下操作:

FormDataSet = woutil.GetDataSet;
dgComments.AutoGenerateColumns = false;
dgComments.DataSource = FormDataSet.Tables["COMMENT"];
foreach(DataColumn col in FormDataSet.Tables["COMMENT"].Columns)
{
    dgComments.Add(col.ColumnName, col.ColumnName);
}

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 1970-01-01
    • 2012-07-03
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多