【发布时间】:2016-04-18 10:22:24
【问题描述】:
GD 全部,
我正在寻找解决以下挑战的方法。
我有一个带有未绑定数据网格视图的表单,dg 有一个添加的列,允许用户选择要使用的方法。 事件的状态存储在数据库中,重新打开表单后,代码检查事件是否处于“打开”状态,如果是,它将先前选择的方法与数据网格中的方法进行比较,并应设置先前激活方法成为“选定”方法。
但不幸的是,我似乎无法让它工作......
以下代码循环遍历 dg 中的方法并比较值,如果符合 methodID,则应将值设置为“True”或 TrueValue。
如果数据库检查返回 true 并且在完全初始化表单之后,这将被初始化,其中 session.methodID 是返回的 LINQ 查询中的一个字段。
For Each r As DataGridViewRow In dgMethods.Rows
If r.Cells(1).Value = session.methodID Then
Dim c As DataGridViewCheckBoxCell = r.Cells(0)
c.Value = c.TrueValue
End If
Next
很遗憾,这不会将复选框设置为“已选中”。
循环运行并评估r.Cells(1).Value 和session.methodID 之间的比较正确并正确触发。
有趣的是,如果我在 'CellContentClick' 事件之后执行类似的循环,它会完全按照预期进行。 (下面的示例将所有复选框值设置为选中)
Private Sub dgMethods_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgMethods.CellContentClick
'Only single selection allowed, so clear table before submitting new selection
For Each r As DataGridViewRow In dgMethods.Rows
Dim c As DataGridViewCheckBoxCell = r.Cells(0)
c.Value = c.TrueValue
Next
dgMethods.CommitEdit(DataGridViewDataErrorContexts.Commit)
End Sub
所以,显然在dgMethods 上调用循环和dgMethods.CellContentClick 事件触发时的状态有所不同,但我不知道是哪一个?
有很多关于尝试设置 CheckBox 列的帖子,但我无法让它们中的任何一个工作。
有人知道吗?
感谢您的建议?
【问题讨论】:
标签: vb.net checkbox datagridview