gridControl-merge cell 合并单元格 颜色标记

 RowCellStyle事件触发

 合并列字段

/// <summary>
/// 合并列 的 列名
/// </summary>
List<string> mergedColumnFieldNameList = new List<string>() { "YMD", "Styleno", "WorkerName", "JobNumber" };

 两个事件

/// <summary>
/// 行 颜色 变化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) {
	GridView view = (GridView)sender;
	GridViewInfo viewInfo = (GridViewInfo)view.GetViewInfo();
	List<GridCellInfo> cells = GetMergedCell(viewInfo, view.FocusedRowHandle, mergedColumnFieldNameList);
	if (cells.Where(x => x.RowHandle == e.RowHandle && x.Column == e.Column).ToList().Count != 0) {
		e.Appearance.BackColor = viewInfo.PaintAppearance.FocusedRow.BackColor;
	}
	if (e.RowHandle == view.FocusedRowHandle) {
		e.Appearance.BackColor = viewInfo.PaintAppearance.FocusedRow.BackColor;
	}
}

 

/// <summary>
/// 选中行 变化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) {
	GridView view = (GridView)sender;
	GridViewInfo viewInfo = (GridViewInfo)view.GetViewInfo();
	RefreshMergedCellList(view, GetMergedCell(viewInfo, e.PrevFocusedRowHandle, mergedColumnFieldNameList));
	RefreshMergedCellList(view, GetMergedCell(viewInfo, e.FocusedRowHandle, mergedColumnFieldNameList));
}
/// <summary>
/// 获取当前行的 合并单元格 的第一个单元格
/// </summary>
/// <param name="viewInfo">GridView对象</param>
/// <param name="rowHandle">行号</param>
/// <param name="mergedColumnFieldName">合并列列名</param>
/// <returns></returns>
private List<GridCellInfo> GetMergedCell(GridViewInfo viewInfo, int rowHandle, List<string> mergedColumnFieldNameList) {
	List<GridCellInfo> cellList = new List<GridCellInfo>();
	for (int i = 0; i < mergedColumnFieldNameList.Count(); i++) {
		GridCellInfo cell = viewInfo.GetGridCellInfo(rowHandle, gridView1.Columns[mergedColumnFieldNameList[i]]);
		//Console.Write( "cell 的 值 : " + cell.CellValue.ToString() + " " );
		//Console.Write( "cell 的 值 : " + gridView1.Columns [mergedColumnFieldName].FieldName + " " );
		if ((cell == null) || (!cell.IsMerged)) {
		} else {
			cellList.Add(cell.MergedCell.MergedCells.First());
		}
	}
	return cellList;
}
/// <summary>
/// 根据 是否是选中行, 是否是合并单元格 判断合并列 是否 被选中
/// </summary>
/// <param name="view"></param>
/// <param name="cell"></param>
/// <returns></returns>
private bool MergedCellIsFocused(GridView view, GridCellInfo cell) {
	if (cell == null)
		return false;
	foreach (GridCellInfo ci in cell.MergedCell.MergedCells)  //遍历单元格的 其他与之 合并的单元格
		if (ci.RowHandle == view.FocusedRowHandle)
			return true;
	return false;
}

 

        /// <summary>
        /// 刷新 合并 单元格
        /// </summary>
        /// <param name="view"></param>
        /// <param name="cell"></param>
        private void RefreshMergedCell(GridView view, GridCellInfo cell) {
            if (cell == null)
                return;
            foreach (GridCellInfo ci in cell.MergedCell.MergedCells)
                view.RefreshRow(ci.RowHandle);

        }

        /// <summary>
        /// 刷新 多列 单元格 合并 单元格
        /// </summary>
        /// <param name="view"></param>
        /// <param name="cell"></param>
        private void RefreshMergedCellList(GridView view, List<GridCellInfo> cellList) {
            if (cellList.Count == 0)
                return;
            for (int i = 0; i < cellList.Count; i++) {
                foreach (GridCellInfo ci in cellList[i].MergedCell.MergedCells) {
                    view.RefreshRow(ci.RowHandle);
                }
            }
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值