.net - 如何创建 Datagridview 列来处理可为空的 bool 值?

标签 .net winforms datagridview nullable

我使用 SqlDataAdapter 在 datagridview 中显示来自 SQL 的数据。 (这是一个 C# Winforms 应用程序,但这个问题同样适用于 VB。)有些列是可为空的 bool 值。

目前,datagridview 使用一个标准的 CheckBox 列,它使用一个空复选框来表示 null 和 false,并使用一个选中的复选框表示 true。

我想创建一个对于空值根本不显示复选框的列。

解决这个问题的最佳方法是什么?我想知道是否应该创建一个从 DataGridView 继承的新控件并从那里开始。

最佳答案

这是我已经采用并且目前正在工作的解决方案:

((DataGridViewCheckBoxColumn)dgvDisplayData.Columns["field_name"]).ThreeState = true;

这是在数据绑定(bind)之后完成的,并假设 sql 字段“field_name”是一个可为空的 bool 值。 Resharper 对这种格式并不特别满意,提供了“可能的 System.NullReferenceException”警告。

我仍然会对替代/更好的建议感兴趣。

编辑:

我已将其更改如下以避免潜在的空值异常:
DataGridViewCheckBoxColumn chkCol =
    (DataGridViewCheckBoxColumn)dgvDisplayData.Columns["field_name"];
if (chkCol != null) chkCol.ThreeState = true;

关于.net - 如何创建 Datagridview 列来处理可为空的 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822321/

相关文章:

c# - 调用 dll 方法时出现 FatalExecutionEngineError

c# - 直到按下 alt 键才显示模态通用对话框

c# - 在展开折叠事件中更改 TreeNode 图像

c# - 有没有办法在datagridview中获取新添加的行?

c# - DataGridView with DataTable 数据源 : how to efficiently extract selected rows?

.net - DataContractSerializer : Deserialized object with reference id 'xyz' not found in stream. 如何恢复数据?

.net - 将连接字符串传递给 dll?

C# 从字符串中获取具有特定模式的子字符串

c# - 数据绑定(bind)动态数据

c# 如何从 List<T> 创建 SortableBindingList