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