找回密码
 立即注册

QQ登录

只需一步,快速开始

jerryannie
中级会员   /  发表于:2012-2-23 18:15  /   查看:7136  /  回复:5
[MultiRow6.0] 事件RowsAdded中

追加了一些改变Cell背景色的代码
debug模式下,可以追踪到Cell的颜色改变了,但实际回到画面上
还是默认色,没有改变

有办法解决吗?感谢

5 个回复

倒序浏览
robert
金牌服务用户   /  发表于:2012-2-24 09:13:00
沙发
我在我的机器上试验了下,没有出现你描述的问题。
我使用的代码如下,不知道是否和你的代码一样。如果能上传一个能重现问题的示例代码,对查明问题会很有好处。
  1.     Private Sub GcMultiRow1_RowsAdded(sender As Object, e As GrapeCity.Win.MultiRow.RowsAddedEventArgs) Handles GcMultiRow1.RowsAdded
  2.         Me.GcMultiRow1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Red
  3.     End Sub
复制代码
回复 使用道具 举报
jerryannie
中级会员   /  发表于:2012-2-26 10:01:00
板凳
我是用dataSource的方式,增加行,然后触发的RowsAdded事件,然后改变Cell背景没效果
需求是改变某一列的Cell的背景色

  1. Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
  2.         Dim detail_temp As New SOD0201Detail_DTDataTable
  3.         For i As Integer = 1 To 5
  4.             Dim row As ElTabelleDataSet.SOD0201Detail_DTRow = detail_temp.NewSOD0201Detail_DTRow()
  5.             row.JUNRO = i
  6.             detail_temp.AddSOD0201Detail_DTRow(row)
  7.         Next
  8.         boundDs.SOD0201Detail_DT.Merge(detail_temp)
  9.     End Sub

  10. Private Sub GcMultiRow1_RowsAdded(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.RowsAddedEventArgs) Handles GcMultiRow1.RowsAdded
  11.         Me.GcMultiRow1.Rows(1).Item(0).Style.BackColor = Color.Blue
  12.     Me.GcMultiRow1.Rows(1).DefaultCellStyle.BackColor = Color.Red
  13. End Sub
复制代码
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2012-2-27 09:48:00
地板
这个问题的原因是你并不是直接在数据源中添加行,而是通过DataTable的Merge方法添加。Merge方法执行后会给MultiRow发Reset通知。导致对颜色的设置丢失。
如果是希望改变某一列的背景色建议使用以下代码。
  1.     Private Sub GcMultiRow1_CellFormatting(sender As Object, e As GrapeCity.Win.MultiRow.CellFormattingEventArgs) Handles GcMultiRow1.CellFormatting
  2.         If e.CellName = "cell1" Then
  3.             e.CellStyle.BackColor = Color.Blue
  4.         End If
  5.     End Sub
复制代码
注意把代码中的“cell1”换成你需要改变列的名字。
回复 使用道具 举报
jerryannie
中级会员   /  发表于:2012-2-27 15:26:00
5#
Merge方法执行后会给MultiRow发Reset通知


其实就是想在每次Merge后,干点啥事情,其他时候不想处理,如果在CellFormatting里做,内耗太大

还有能替代的办法吗? 实在不好意思,需求太过于BT了
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2012-2-27 15:35:00
6#
使用CellFormating是MultiRow比较高效的方法。
为什么会觉得在CellFormatting里做内耗太大?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部