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);
}
}
}