读书人

PivotGridControl数据汇总有关问题

发布时间: 2012-12-16 12:02:32 作者: rapoo

PivotGridControl数据汇总问题
.

希望实现Cell和GrandTotal中的B/A的值等于B/A*100%
用绑定列,目前没有实现该功能,请高手指教

[解决办法]
B/A*100% 不还是一样的值吗? 你是不是想把值转换成20%的形式? 还是转换成0.2的形式?
[解决办法]
我建议你最好还是在数据源上做处理,计算好了在绑定到B/A列上。
[解决办法]
结果是百分数,我是在数据源做的出来

ROUND(CAST(FOT AS FLOAT)/CAST(FP AS FLOAT),2) as Rate

这问题出来了,数据汇总时(Cell和GrandTotal)将所有列相加了,将SummaryType改为Average
将解决做平均处理也不满足要求

需要的结果是B/A列都是=B/A的结果(B1+B2+B3)/(A1+A2+A3),不是要自动将每列的结果做平均(B1/A1+B2/A2+B3/A3)/3

[解决办法]
引用:
需要的结果是B/A列都是=B/A的结果(B1+B2+B3)/(A1+A2……


如果是自带几种汇总不能满足你要求的话,你可以在GridView事件中自定义某列的计算方法

private void GridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e)
{
if((e.Item as GridColumnSummaryItem).FieldName == "B/A")
e.TotalValue = "具体的求值方法:(B1+B2+B3)/(A1+A2+A3)";

}







[解决办法]
@zhlin118
我这是用的
pivotGridControl控件,没有CustomSummaryCalculate事件
[解决办法]
哦,我的控件版本可能太老了,所以没有找到你这个控件,你用的几点几的版本?
[解决办法]
10.2.3
[解决办法]
private void pivotGridControl1_CustomCellValue(object sender, DevExpress.XtraPivotGrid.PivotCellValueEventArgs e)
{
if (e.DataField.FieldName.Equals("MLL"))
{
try
{
decimal CB = (decimal)((DevExpress.XtraPivotGrid.PivotGridControl)sender).Cells.GetCellInfo(e.ColumnIndex - 2, e.RowIndex).Value;
decimal MLE = (decimal)((DevExpress.XtraPivotGrid.PivotGridControl)sender).Cells.GetCellInfo(e.ColumnIndex - 1, e.RowIndex).Value;
if ((CB + MLE) != 0)
{
e.Value = MLE / (CB + MLE);
}


}
catch (Exception)
{
}

}

}
[解决办法]
朕的最新算法,通用性能大大提高:

private void pivotGridControl1_CustomCellValue(object sender, DevExpress.XtraPivotGrid.PivotCellValueEventArgs e)
{
if (e.DataField.FieldName.Equals("MLL"))
{
Dictionary <String, String> fields = new Dictionary <string, string> ();
try
{
for (int i = 0; i < e.GetColumnFields().Length; i++)
{
fields.Add(e.GetColumnFields()[i].FieldName, e.GetFieldValue(e.GetColumnFields()[i]).ToString());
}
for (int i = 0; i < e.GetRowFields().Length; i++)
{
fields.Add(e.GetRowFields()[i].FieldName, e.GetFieldValue(e.GetRowFields()[i]).ToString());
}
DataTable dt = pivotGridControl1.DataSource as DataTable;
string filter = string.Empty;
foreach (string key in fields.Keys)
{
filter += string.Format(" and {0}='{1}'", key, fields[key]);
}


if (filter.Length>=5)
{
filter = filter.Substring(5, filter.Length - 5);
}
decimal CB = (decimal)dt.Compute("SUM(CB)", filter);
decimal MLE = (decimal)dt.Compute("SUM(MLE)", filter);
//decimal CB = (decimal)((DevExpress.XtraPivotGrid.PivotGridControl)sender).Cells.GetCellInfo(e.ColumnIndex - 2, e.RowIndex).Value;
//decimal MLE = (decimal)((DevExpress.XtraPivotGrid.PivotGridControl)sender).Cells.GetCellInfo(e.ColumnIndex - 1, e.RowIndex).Value;
if ((CB + MLE) != 0)
{
e.Value = MLE / (CB + MLE);
}
}
catch (Exception)
{
}

}

}
[解决办法]
你好,xqgliet
这个问题解决了没有,我也有同样的问题啊。我的是asp.net

读书人网 >.NET

热点推荐