首页 > 代码库 > PivotGridField 中对Unbound的列赋值(除法)
PivotGridField 中对Unbound的列赋值(除法)
.aspx中<Fields>内的代码:
<dx:PivotGridField ID="field_corr" Area="DataArea" AreaIndex="0" FieldName="诊断符合数" ValueFormat-FormatType="Numeric" Caption="诊断符合数"> </dx:PivotGridField>
<dx:PivotGridField ID="field_Sum" Area="DataArea" AreaIndex="1" FieldName="诊断总数" Caption="诊断总数"></dx:PivotGridField>
<dx:PivotGridField ID="field_compare" Area="DataArea" AreaIndex="2" FieldName="" UnboundType="Decimal" Caption="诊断符合率" SummaryType="Custom"> </dx:PivotGridField>
其中诊断符合率=诊断符合数/诊断总数
但是在用Unbound的前台表达式中绑定字段除法后得到的结果为0(加减乘均可以直接在前台表达式UnboundExpression中赋值)
除法需要在后台绑定OnCustomCellDisplayText事件:OnCustomCellDisplayText="pivotGrid_CustomCellDisplayText"
.cs
protected void pivotGrid_CustomCellDisplayText(object sender, PivotCellDisplayTextEventArgs e) {
if (object.ReferenceEquals(e.DataField, ASPxPGDiagnosticAccordanceRate.Fields["诊断符合率"])) { //判断传的参数所在的列(每列均传递一次)
PivotGridField corrcount = ASPxPGDiagnosticAccordanceRate.Fields["诊断符合数"];
object Corrcount = e.GetCellValue(corrcount);
PivotGridField sumcount = ASPxPGDiagnosticAccordanceRate.Fields["诊断总数"];
object Sumcount = e.GetCellValue(sumcount);
if (Sumcount == null) return;
decimal perc = (decimal)Corrcount / (decimal)Sumcount;//计算结果
e.DisplayText = string.Format("{0:p}", perc);//显示为百分数的形式
}
}
PivotGridField 中对Unbound的列赋值(除法)