【问题标题】:C# Winforms use AutoGenerateColumns in DataGridView with a CheckBoxColumnC# Winforms 在 DataGridView 中使用 AutoGenerateColumns 和 CheckBoxColumn
【发布时间】:2013-06-06 20:16:31
【问题描述】:

我使用带有 AutoGenerateColumns 的 DataGridView,但想将其中一列(整数)显示为 CheckBoxColum,有没有简单的方法,或者我必须关闭 AutoGenerateColumns 并手动添加所有列? 更改 cellTemplate 会导致错误

dgvKlanten.AutoGenerateColumns = true;
dgvKlanten.DataSource = dsKlantenBeheer.Tables["Klanten"];
dgvKlanten.Columns["Nieuwsbrief"].Width = 70;
//dgvKlanten.Columns["Nieuwsbrief"].CellTemplate = new DataGridViewCheckBoxCell();

【问题讨论】:

  • 该字段不需要是Boolean 才能自动发生吗? Integer 和复选框不等同。
  • 从 DataGridView 中删除该列,然后在自动生成步骤之后使用正确的规范重新添加它?
  • @DonBoitnott:我使用 SqlServer 并没有看到布尔类型,我应该在我的数据库中使用什么类型?
  • 我相信你想要Bit。使用该传入数据类型,您应该会自动获得一个复选框列。
  • @dash:如何将这个新列绑定到整数字段?

标签: c# winforms datagridview


【解决方案1】:

您可以隐藏该列的自动生成列,然后手动添加一个复选框列来代替它。

顺便说一句,我假设这个整数列只支持值零和一?由于这是一个整数,而不是复选框所期望的布尔值,您可能必须使用网格事件(例如 CellFormatting)从数据源读取值并相应地设置复选框,但我不确定。或者,如果这是一个对象,您可以使用另一个自定义属性将整数值公开为布尔值。无论如何,您可能需要做更多的工作,而不仅仅是添加一个复选框列并将其指向数据源列。

【讨论】:

  • 我使用 SqlServer 并没有看到布尔类型,我应该在我的数据库中使用什么类型?
  • 位 = SQL Server 中的布尔值。
  • 如果您将 DB 类型更改为 Bit,那么自动生成的列将是一个复选框。
  • 好的,我会尝试,但是如果我遵循删除/添加的道路,我如何将此新列绑定到整数字段?
  • 每个 DataGridViewColumn 都有一个名为 DataPropertyName 的属性。将此名称设置为 DataSource 中属性的名称。但是,将 DB 列设置为 bit 类型确实是最正确的方法。
猜你喜欢
  • 1970-01-01
  • 2013-07-22
  • 2015-01-12
  • 2013-03-15
  • 1970-01-01
  • 2012-11-05
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多