DevExpress网格中的计算

时间:2016-06-14 14:31:20

标签: c# winforms gridview devexpress xtragrid

我在Windows窗体中有一个DevExpress网格,其数据源是动态的,并在运行时进行绑定。我需要在此网格上进行一些计算。

所有列都是动态的

假设网格有2列产品费率 300行。 在这里,我需要第三栏,比如说。最高费率。

此列的第一个单元格应该是从第1个5行开始的最大速率 见下文excel的例子。

enter image description here 此MAX RATE列可以是任何值(可以是平均值或SUM或任何其他值)

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用gridview的CustomDrawCell事件。

private void gridview_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
    //assume colMaxRate is your Max Rate column name
    if (e.Column.FieldName == colMaxRate.FieldName) {
        //do your calculation you need, in this example, find max value of next 4 rows including current row
        int maxValue = 0;
        //initialize maxValue to current row's value
        maxValue = gridview.GetRowCellValue(e.RowHandle, colRate.FieldName);
        for (rowIndex = 0; rowIndex < 4; rowIndex++) {
            //TODO: do your own checking to make sure you don't exceed last row count
            if (maxValue > gridview.GetRowCellValue(e.RowHandle + rowIndex, colRate.FieldName)) {
                maxValue = gridview.GetRowCellValue(e.RowHandle + rowIndex, colRate.FieldName);
            }
        }
        e.DisplayText = maxValue.ToString();
        e.Handled = true;
    }
}