2011-05-22 34 views
0

使用DataGridView.AutoGenerateColumns = True时,绑定对象的布尔属性更新正常,但不是手动添加列时。价值观仍然是错误的。手动生成的DataGridViewCheckBoxColumn不更新绑定对象

添加DataGridViewCheckBoxColumn时是否需要设置一些参数?似乎不足以设置.DataPropertyName。

我看到它有一些像.TrueValue,.FalseValue等其他属性,但不知道它们是什么?

或者我是否需要编写一些类型的自定义CellFormatting/CellValidating事件?

编辑:

<Extension()> _ 
Public Sub AddCheckBoxColumn(ByVal dgv As DataGridView, ByVal propertyName As String, ByVal colName As String, ByVal fillWeight As Integer) 
    Dim col As New DataGridViewCheckBoxColumn(False) 
    col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 
    col.HeaderText = colName 
    col.Name = colName 
    col.Width = fillWeight 
    col.DataPropertyName = propertyName 
    dgv.Columns.Add(col) 
End Sub 
+0

如果您在后面的代码中手动添加标记和代码,您可以显示标记和代码吗? – 2011-05-22 22:08:05

+0

我不熟悉“后面的代码”这个表达方式吗?这是一个Windows窗体项目。但在上面添加了一些代码。 – bretddog 2011-05-22 22:16:41

+0

在添加列后,您是否在网格上运行DataBind()? – 2011-05-22 22:20:08

回答

0

发现我的错误。在一个不同的库中有一个不完全的扩展方法。所以它没有使用我正在改变的方法。

0

也许你拼错绑定字段的名称: 我通过扩展方法添加列?只要您的数据列是布尔类型,它就应该工作。

如果不是,TrueValue会在检查复选框时表示设置值,FalseValue会在没有设置复选框时表示值,例如可以将字符串“Checked”和“Unchecked”映射到字符串类型的字段。

  1. 请问现场阅读是否正确?
  2. 您可以选中该复选框,或者当您单击它时,它保持未选中状态?
+0

是的,我打印调试领域,它总是假。按预期方式正在检查/取消选中框。我确定使用正确的属性名称。那么需要设置的.DataPropertyName唯一字段? – bretddog 2011-05-22 22:25:06

+0

是的,它用于DataGridViewCheckBoxColumn。如果在代码中将对象的值设置为True,那么DataGridView是否反映了这一点?另请尝试dataGridView.EndEdit()来提交用户更改。 – surfen 2011-05-22 22:27:25

+0

没有反映出来。是的,我也使用EndEdit。嗯... – bretddog 2011-05-22 22:30:26

相关问题