VB datagrid指定行着色
2014-02-13 12:17
375 查看
有图有真相:
关键点:使用datagrid的FetchRowStyle委托。
(Form界面的datagrid名称:dgv)
使用FetchRowStyle委托,要先打开开关:
然后可以在FetchRowStyle委托里面更改datagrid每一行的单元格格式:
本例子是按照Lot No相同的record进行着色,在数据表里面增加一个着色标志:HighLighte,处理数据如下样子:
columns:Lot No ...... HighLighte
data:
BLI0011 ...... 0
BLI0012 ...... 0
BLI0016 ...... 1
BLI0016 ...... 1
BLI0016 ...... 1
BLI0016 ...... 1
BLI0017 ...... 2
BLI0017 ...... 2
. ...... .
. ...... .
然后在FetchRowStyle委托里面根据着色标志HighLighte进行着色。
为了处理成上面的结果,本人循环了两次,第一次处理的数据结果:
columns:Lot No ...... HighLighte
data:
BLI0011 ...... 0
BLI0012 ...... 0
BLI0016 ...... 1
BLI0016 ...... 2
BLI0016 ...... 3
BLI0016 ...... 4
BLI0017 ...... 1
BLI0017 ...... 2
. ...... .
. ...... .
code:
第二次处理数据的code:
对每行的HighLighte进行判断,如果HighLighte=1就更改着色标志值,这样就可以令相同LotNo的record有相同的着色标志,相邻的不同lotNo的record有不同的着色标志。
这个处理过程进行了两次循环,诸位有更好的方法,承蒙赐教。
关键点:使用datagrid的FetchRowStyle委托。
(Form界面的datagrid名称:dgv)
使用FetchRowStyle委托,要先打开开关:
dgv.FetchRowStyles = True
然后可以在FetchRowStyle委托里面更改datagrid每一行的单元格格式:
Private Sub dgv_FetchRowStyle(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs) Handles dgv.FetchRowStyle If dgv.Columns("HighLighte").CellValue(e.Row) = 1 Then e.CellStyle.BackColor = Color.Yellow End If If dgv.Columns("HighLighte").CellValue(e.Row) = 2 Then e.CellStyle.BackColor = Color.YellowGreen End If End Sub
本例子是按照Lot No相同的record进行着色,在数据表里面增加一个着色标志:HighLighte,处理数据如下样子:
columns:Lot No ...... HighLighte
data:
BLI0011 ...... 0
BLI0012 ...... 0
BLI0016 ...... 1
BLI0016 ...... 1
BLI0016 ...... 1
BLI0016 ...... 1
BLI0017 ...... 2
BLI0017 ...... 2
. ...... .
. ...... .
然后在FetchRowStyle委托里面根据着色标志HighLighte进行着色。
为了处理成上面的结果,本人循环了两次,第一次处理的数据结果:
columns:Lot No ...... HighLighte
data:
BLI0011 ...... 0
BLI0012 ...... 0
BLI0016 ...... 1
BLI0016 ...... 2
BLI0016 ...... 3
BLI0016 ...... 4
BLI0017 ...... 1
BLI0017 ...... 2
. ...... .
. ...... .
code:
Private Sub dgvHighLighte(ByRef dgvData As DataTable) Dim cstord As String = "" Dim count As Integer = 0 Dim colorFlg As Integer = 0 For i As Integer = 0 To dgvData.Rows.Count - 1 If dgvData.Rows(i).Item("cstord") <> cstord Then cstord = dgvData.Rows(i).Item("cstord") count = 0 colorFlg = 0 Else count += 1 colorFlg += 1 End If If count > 0 Then dgvData.Rows(i - 1).Item("HighLighte") = colorFlg dgvData.Rows(i).Item("HighLighte") = colorFlg + 1 End If Next dgvData.AcceptChanges() End Sub
第二次处理数据的code:
Private Sub getNullColumns(ByRef dgvData As DataTable) Dim colorFlg As Integer = 2 For Each row As DataRow In dgvData.Rows If row.Item("HighLighte") = 1 Then If colorFlg = 1 Then colorFlg = 2 Else colorFlg = 1 End If End If If row.Item("HighLighte") >= 1 Then row.Item("HighLighte") = colorFlg End If Next dgvData.AcceptChanges() End Sub
对每行的HighLighte进行判断,如果HighLighte=1就更改着色标志值,这样就可以令相同LotNo的record有相同的着色标志,相邻的不同lotNo的record有不同的着色标志。
这个处理过程进行了两次循环,诸位有更好的方法,承蒙赐教。
相关文章推荐
- VB 6.0 使用ADODB对象
- VB 共享软件防破解设计技术初探(二)
- VB 共享软件防破解设计技术初探(一)
- VB.NET 从main函数里启动窗口
- 禁止 CTRL+ALT+DEL
- 用VB创建开始菜单快捷方式(无需其他DLL)
- 在XP里提升自己的程序以获得特定的权限
- 调整 Combo 下拉部分的宽度
- 利用VB的图片框实现屏幕的滚动
- VB编程常见问题
- VB.net 学习资源
- Use vbs to batch run commands
- Ext3.2 布局——vbox layout
- vbs脚本发送邮件
- excel vba真正的动态数组实例
- DataTable转成View页面中使用的List
- 通过vbs脚本备份数据-本地到异地
- VB中应用DDE
- vb6 拆分命令行手册中的输出参数
- 没有文件扩展 vbs 的脚本引擎 解决方案