XtraGrid如何手动合并单元格

阿亮亮 2010-10-19 06:42:37
虽然设置了AllowCellMerge=true,XtraGrid是自动将相近单元格内容一样的合并,但是只要某一列中两行数据相同,就合并了,有时这样不太符合要求.
如果是有如下数据
姓名 月份 工资 领用时间
张三 1 1000 2010-8-8
李四 1 800 2010-8-8
李四 2 800 2010-9-8
如果是按它自动的合并的话,会是
姓名 月份 工资 领用时间
张三 1 1000 2010-8-8
李四 合并了 800 合并了
合并了 2 合并了 2010-9-8
这是不对的,正确的应该是
姓名 月份 工资 领用时间
张三 1 1000 2010-8-8
李四 1 800 2010-8-8
合并了 2 800 2010-9-8
这个控件只有AllowCellMerge这个来控制,还有别的方法实现不?
...全文
270 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LemonAB 2012-10-22
  • 打赏
  • 举报
回复

这是 我在DevExpress中文网 看到的关于自定义合并单元格的代码,贴出了分享给大家:

C#

using DevExpress.XtraGrid.Views.Grid;
// ...
private void gridView1_CellMerge(object sender, CellMergeEventArgs e) {
if(e.Column.FieldName == "Order Date") {
GridView view = sender as GridView;
DateTime val1 = (DateTime)view.GetRowCellValue(e.RowHandle1, e.Column);
DateTime val2 = (DateTime)view.GetRowCellValue(e.RowHandle2, e.Column);
e.Merge = val1.Date == val2.Date;
e.Handled = true;
}
}
VB

Imports DevExpress.XtraGrid.Views.Grid
' ...
Private Sub GridView1_CellMerge(ByVal sender As Object, _
ByVal e As CellMergeEventArgs) Handles GridView1.CellMerge
If (e.Column.FieldName = "Order Date") Then
Dim view As GridView = CType(sender, GridView)
Dim val1 As DateTime = view.GetRowCellValue(e.RowHandle1, e.Column)
Dim val2 As DateTime = view.GetRowCellValue(e.RowHandle2, e.Column)
e.Merge = (val1.Date = val2.Date)
e.Handled = True
End If
End Sub
bryht 2010-10-19
  • 打赏
  • 举报
回复
以前用的时候也没解决这个
不过单元格合并就是重绘的单元格OnPaint()函数还是什么的,你找找看吧,以前做的,都忘了,只能分享下思路了
51Crack 2010-10-19
  • 打赏
  • 举报
回复
我还想横向合并
51Crack 2010-10-19
  • 打赏
  • 举报
回复
从3.1到10.1,我一直在寻找!

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧