GridControl分组之后按组显示明细序号
1. GirdControl分组功能大家都很熟悉了,只需要设置一下列属性GroupIndex即可。
分组之后,可以通过gridView的CustomDrawGroupRow事件,自定义组标题行的显示效果。
private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
{
//获取分组行信息。
GridGroupRowInfo info = e.Info as GridGroupRowInfo;
//显示内容赋值
info.GroupText = info.EditValue.ToString();
}
默认传入的事件对象内容比较少,可能无法满足你的个性化显示需求,那么可以通过以下方法获取更多信息。
2. GridControl显示自增序号。
设置GridView的属性ShowIndicator为True,设置IndicatorWidth=40。
通过GridView的CustomDrawRowIndicator实现。
private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
if(e.RowHandle>=0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
3. 如果想要实现先分组,再按分组显示明细序号,如何实现?
private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
{
//获取分组行信息。
GridGroupRowInfo info = e.Info as GridGroupRowInfo;
//显示内容赋值
info.GroupText = info.EditValue.ToString();
//获取分组下面的子记录数
int rowCount = gridView1.GetChildRowCount(e.RowHandle);
//循环给子记录赋值
for (int i = 0; i < rowCount; i++)
{
int childRowHandle = gridView1.GetChildRowHandle(e.RowHandle, i);
ItemObject item = gridView1.GetRow(childRowHandle) as ItemObject;
item.Mxxh = i+1;
}
}
private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
//if(e.RowHandle>=0)
//{
// e.Info.DisplayText = (e.RowHandle + 1).ToString();
//}
if(e.Info.Kind == DevExpress.Utils.Drawing.IndicatorKind.Row)
{
if(e.RowHandle<0)
{
object groupRowValue = gridView1.GetGroupRowValue(e.RowHandle);
e.Info.DisplayText = "组:" + (groupRowValue == null ? "" : groupRowValue.ToString());
}
else
{
ItemObject item = gridView1.GetRow(e.RowHandle) as ItemObject;
e.Info.DisplayText = item.Mxxh.ToString();
}
}
}
效果如图所示
完整代码示例,见附件。
GridControl分组显示明细序号