【问题标题】:How to add a IList<ItemStatusClass> in an cxisting column of DataGridView?如何在 DataGridView 的现有列中添加 IList<ItemStatusClass>?
【发布时间】:2021-06-16 13:25:46
【问题描述】:

DataGridView 检索的脚本是:

DataSet ds1 = new DataSet();
isSqlString =  "SELECT [Item] AS itemName,Status as itemStatus From Items;"
SqlDataAdapter da = new SqlDataAdapter(isSqlString, isConnStr);
da.Fill(ds1, "items");
datagridview1.DataSource = ds1.Tables["items"].DefaultView;

IList:

IList<ItemStatusClass> itemStatus = 
                    new List<ItemStatusClass>
                    {   
                         new ItemStatusClass { id = 0, name = "AAA" },
                         new ItemStatusClass { id = 1, name = "BBB" },
                         new ItemStatusClass { id = 2, name = "CCC" } 
                    };

我已经使用以下代码添加了这个:

DataGridViewComboBoxColumn statusCol = new DataGridViewComboBoxColumn();
statusCol.DataPropertyName = "itemStatus";
statusCol.Name = "Status";
statusCol.ReadOnly = false;
statusCol.DataSource = itemStatus;
statusCol.DisplayMember = "name";
statusCol.ValueMember = "id";
datagridview1.Columns.Add(statusCol);
datagridview1.Columns[2].DataPropertyName = "itemStatus";

我只需要将 IList&lt;ItemStatusClass&gt; 添加到 DataGridView 的现有列中。

在 DataGridView 的最后一个列中出现了现有列的值。但是现有列没有变化,现有列的值保持不变。项目代码列处于隐藏状态。

如上图所示,显示了两个 Status 列。第一个状态列来自 SQL,第二个状态列是我以编程方式添加的。

我需要第二个状态列必须显示为第二个状态列。请让我摆脱这种情况。

【问题讨论】:

  • DataGridView 上是否有类似“AutoGenerateColumn”的选项?
  • 是的,我可以选择我的 datagrigview。
  • 我在设置数据源之前添加。

标签: c# .net winforms


【解决方案1】:

禁用 AutoGenerateColumns 参数

datagridview1.AutoGenerateColumns = false

然后添加您想要的列。

编辑: 在您的代码中,datagridview1.Columns 在您添加的列之前有两列。 它们是在您使用 AutoGenerateColumns = true 添加数据源时创建的。

在加载数据源之前检查 AutoGenerateColumns 是否仍然为 false。

【讨论】:

  • 在 Load 事件中,我添加了您放置的行。但我还是一样。
  • 加载数据源时检查它是否仍然存在
  • 我不明白这一点。可以请您介绍一下吗?
猜你喜欢
  • 2014-09-30
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多