继上次的文章之后,补充来了。这次主要是总结一些常见的属性和事件结合的效果
二、事件和属性:
1、表格行序号:
//设置空白行的宽度
gridView.IndicatorWidth = 40;
//添加事件
gridView.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView1_CustomDrawRowIndicator);
public static void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
运行效果如图显示:
2、行背景颜色变化,字体颜色变化:
因为我使用的gridcontrol是通过DataTable绑定的形式,且gridcontrol中没有关于 行 的直接相关属性,所以想要改变行或者单元格的颜色需要借助事件:
//改变行颜色
gridView.RowStyle += new DevExpress.XtraGrid.Views.Grid.RowStyleEventHandler(gridView_RowStyle);
private void gridView_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
if (e.RowHandle > -1)
{
GridView gridView = ((GridView)sender);
if (e.RowHandle==0)
e.Appearance.BackColor = Color.Red;
}
}
//改变单元格颜色
gridView.RowCellStyle += new RowCellStyleEventHandler(gridView_RowCellStyle);
private void gridViewData_RowCellStyle(object sender, RowCellStyleEventArgs e)
{
if (e.RowHandle > -1)
{
GridView view = sender as GridView;
if (RowIndex.Count > 0)
{
if (RowIndex.Contains(e.RowHandle))
{
if (e.Column.FieldName == view.Columns[unitType].FieldName)
{
e.Appearance.BackColor = Color.Gold;
}
}
else
{
if (e.Column.FieldName == view.Columns[unitType].FieldName)
{
e.Appearance.BackColor = Color.White;
}
}
}
else
{
if (e.Column.FieldName == view.Columns[unitType].FieldName)
{
e.Appearance.BackColor = Color.White;
}
}
}
}
在这提一下,如果是需要改变某一列的颜色,属性可以直接使用:
gridView.Columns[0].AppearanceCell.BackColor = Color.White;
3、允许相同的表格列可以合并:
//首先需要设置属性
//设置表格的纵向单元格可以合并(true:表示可以)
gridView.OptionsView.AllowCellMerge = true;
//然后编写事件
this.bandedGridView1.CellMerge += new DevExpress.XtraGrid.Views.Grid.CellMergeEventHandler(this.bandedGridView1_CellMerge);
private void bandedGridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
{
//需要合并单元格的列字段名称
string BadTimeColumnFieldName = "RowHeaderAll";
//合并单元格
if (e.Column.FieldName == BadTimeColumnFieldName)
{
e.Merge = true;
e.Handled = true;
//相同的值合并,不同值不合并可以在这再写判断
}
else
{
//其他列不合并
e.Merge = false;
e.Handled = true;
}
}
后续的补充会接着编写,有兴趣的小伙伴可以关注我,需要转载的小伙伴请附上链接哦!!!