'如果是Column8列,值为1时显示为“*”号,否则为空白
If dgrObj.Columns(e.ColumnIndex).Name = "Column8" Then
e.Value = IIf(e.Value.ToString = "1", "*", "")
e.FormattingApplied = True
End If
然后datagridview1.datasource = dt '绑定数据
显示画面时,这个datagridview1里的数据的Column8列显示为“*”或空白了。
然后修改了dt里的数据后(从数据库重新取得数据集),再次绑定到datagridview1,
然后循环每一行,判断这个列的值是不是“*”,总是不成立,为什么?
for i = 0 to datagridview1.rows.count - 1
If datagridview1.Rows(i).Cells("Column8").Value.ToString.Trim = "*" Then
msgbox("fjdkskaf")
End If
这个msgbox始终不会走到,跟踪了一下,发现datagridview1.Rows(i).Cells("Column8").Value值还是"1",而不是"*".
为什么呀?显示没问题呀。
什么时候会激发CellFormatting事件?重新绑定数据会激发吗?
7 个解决方案
#1
e.editformatedvalue 试试看呢
#2
不知道你想要做什么功能,按照你的描述,应该就是事件不对把。
CellFormatting在值改变之前就触发了。
用CellValidating方法,然后用 e.FormattedValue 来取得要设置的值,
DataGridView1.CurrentCell.value 为原先的值。
CellFormatting在值改变之前就触发了。
用CellValidating方法,然后用 e.FormattedValue 来取得要设置的值,
DataGridView1.CurrentCell.value 为原先的值。
#3
Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting, DataGridView2.CellFormatting
If e.ColumnIndex > -1 AndAlso e.RowIndex > -1 Then
If DataGridView1.Columns(e.ColumnIndex).Name.Contains("Column8") Then
e.Value = If(e.Value.ToString.Trim = "1", "*", "")
End If
End If
End Sub
If e.ColumnIndex > -1 AndAlso e.RowIndex > -1 Then
If DataGridView1.Columns(e.ColumnIndex).Name.Contains("Column8") Then
e.Value = If(e.Value.ToString.Trim = "1", "*", "")
End If
End If
End Sub
#4
我想问的是
显示已经被替换,但是为什么
这样的语句却不成立呢?
e.Value = If(e.Value.ToString.Trim = "1", "*", "")
显示已经被替换,但是为什么
If datagridview1.Rows(i).Cells("Column8").Value.ToString.Trim = "*" Then
这样的语句却不成立呢?
#5
实际上单元格的数据值并没有改变,只是显示值变了而已.
#6
你看看datagridview1.Rows(i).Cells("Column8").Value是不是还是1
#7
在RowPrePaint事件里面写你那个操作试试。
#1
e.editformatedvalue 试试看呢
#2
不知道你想要做什么功能,按照你的描述,应该就是事件不对把。
CellFormatting在值改变之前就触发了。
用CellValidating方法,然后用 e.FormattedValue 来取得要设置的值,
DataGridView1.CurrentCell.value 为原先的值。
CellFormatting在值改变之前就触发了。
用CellValidating方法,然后用 e.FormattedValue 来取得要设置的值,
DataGridView1.CurrentCell.value 为原先的值。
#3
Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting, DataGridView2.CellFormatting
If e.ColumnIndex > -1 AndAlso e.RowIndex > -1 Then
If DataGridView1.Columns(e.ColumnIndex).Name.Contains("Column8") Then
e.Value = If(e.Value.ToString.Trim = "1", "*", "")
End If
End If
End Sub
If e.ColumnIndex > -1 AndAlso e.RowIndex > -1 Then
If DataGridView1.Columns(e.ColumnIndex).Name.Contains("Column8") Then
e.Value = If(e.Value.ToString.Trim = "1", "*", "")
End If
End If
End Sub
#4
我想问的是
显示已经被替换,但是为什么
这样的语句却不成立呢?
e.Value = If(e.Value.ToString.Trim = "1", "*", "")
显示已经被替换,但是为什么
If datagridview1.Rows(i).Cells("Column8").Value.ToString.Trim = "*" Then
这样的语句却不成立呢?
#5
实际上单元格的数据值并没有改变,只是显示值变了而已.
#6
你看看datagridview1.Rows(i).Cells("Column8").Value是不是还是1
#7
在RowPrePaint事件里面写你那个操作试试。