'宣言 Public Property FormulaValueConverter As Infragistics.Win.CalcEngine.IFormulaValueConverter
public Infragistics.Win.CalcEngine.IFormulaValueConverter FormulaValueConverter {get; set;}
FormulaValueConverter によって、数式が計算で使用する値にセル値を変換するためのカスタム ロジックを記述することができます。数式計算の結果をセル値に変換するためのカスタム ロジックを記述することもできます。
Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid Imports Infragistics.Win.CalcEngine Class CustomFormulaValueConverter Implements IFormulaValueConverter Private Function ConvertFromUltraCalcValue(ByVal formulaResult As UltraCalcValue, ByVal context As Object) As Object Implements IFormulaValueConverter.ConvertFromUltraCalcValue ' ConvertFromUltraCalcValue gets called by the UltraWinGrid whenever a ' formula is evaluated. You typically use this method to convert the formula ' result which may be in one type or format to the type and format of the ' column. NOTE: The calc engine uses invariant culture to parse and format ' values. System.Diagnostics.Debug.WriteLine("ConvertFromUltraCalcValue called:") ' Context parameter is the object that's the target of the formula ' evaluation. It's either an UltraGridCell or SummaryValue instance in the ' case of UltraWinGrid. System.Diagnostics.Debug.WriteLine(" TypeOf Context is " & context.GetType().Name) If formulaResult.IsError Then ' Handle situations where the result of the formula evaluation is error. System.Diagnostics.Debug.WriteLine(" Formula TypeOf result is error: " & formulaResult.ToString()) ' Return the value you want to assigned to the cell or the summary. Return "#E" Else System.Diagnostics.Debug.WriteLine(" Formula evaluated to: " & formulaResult.ToString()) ' Return the value you want to assigned to the cell or the summary. ' Typically you return a value that's the same type as the column's data type. Return formulaResult.ToDecimal() End If End Function Private Function ConvertToUltraCalcValue(ByVal cellValue As Object, ByVal context As Object) As UltraCalcValue Implements IFormulaValueConverter.ConvertToUltraCalcValue ' ConvertToUltraCalcValue gets called by the UltraWinGrid whenever a cell or ' summary value is fed to a formula during evaluation. You typically use this ' method to convert the cell values which may be in one format (for example ' the US culture format) to the format that's appropriate for the formula ' evaluation. NOTE: The calc engine uses invariant culture to parse and ' format values. System.Diagnostics.Debug.WriteLine("ConvertToUltraCalcValue called:") ' Context parameter is the object associated with the cell value. It's either ' an UltraGridCell or SummaryValue instance in the case of UltraWinGrid ' objects however it could be UltraCalcSettings or NamedReference instances ' as well if the formula refers to a control outside of the grid or a named ' reference. System.Diagnostics.Debug.WriteLine(" TypeOf Context is " & context.GetType().Name) If Nothing Is cellValue Or DBNull.Value Is cellValue Then System.Diagnostics.Debug.WriteLine(" Value being TypeOf converted is (NULL)") Return New UltraCalcValue(cellValue) End If System.Diagnostics.Debug.WriteLine(" Value being TypeOf converted is " & cellValue.ToString()) Dim val As Double = Double.Parse(cellValue.ToString()) Return New UltraCalcValue(val) End Function End Class Private Sub UltraGrid1_InitializeLayout(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles ultraGrid1.InitializeLayout Dim column As UltraGridColumn = Me.ultraGrid1.DisplayLayout.Bands(0).Columns(0) ' Add a summary that calculates the total of the column. Dim summary As SummarySettings = column.Band.Summaries.Add("sum( [" & column.Key & "] )") ' Set the FormulaValueConverter on both the column and summary. column.FormulaValueConverter = New CustomFormulaValueConverter() summary.FormulaValueConverter = New CustomFormulaValueConverter() End Sub
using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System.Diagnostics; using Infragistics.Win.CalcEngine; private class CustomFormulaValueConverter : IFormulaValueConverter { public object ConvertFromUltraCalcValue( UltraCalcValue formulaResult, object context ) { // ConvertFromUltraCalcValue gets called by the UltraWinGrid whenever a // formula is evaluated. You typically use this method to convert the formula // result which may be in one type or format to the type and format of the // column. NOTE: The calc engine uses invariant culture to parse and format // values. System.Diagnostics.Debug.WriteLine( "ConvertFromUltraCalcValue called:" ); // Context parameter is the object that's the target of the formula // evaluation. It's either an UltraGridCell or SummaryValue instance in the // case of UltraWinGrid. System.Diagnostics.Debug.WriteLine( " Context is " + context.GetType( ).Name ); if ( formulaResult.IsError ) { // Handle situations where the result of the formula evaluation is error. System.Diagnostics.Debug.WriteLine( " Formula result is error: " + formulaResult.ToString( ) ); // Return the value you want to assigned to the cell or the summary. return "#E"; } else { System.Diagnostics.Debug.WriteLine( " Formula evaluated to: " + formulaResult.ToString( ) ); // Return the value you want to assigned to the cell or the summary. // Typically you return a value that's the same type as the column's data type. return formulaResult.ToDecimal( ); } } public UltraCalcValue ConvertToUltraCalcValue( object cellValue, object context ) { // ConvertToUltraCalcValue gets called by the UltraWinGrid whenever a cell or // summary value is fed to a formula during evaluation. You typically use this // method to convert the cell values which may be in one format (for example // the US culture format) to the format that's appropriate for the formula // evaluation. NOTE: The calc engine uses invariant culture to parse and // format values. System.Diagnostics.Debug.WriteLine( "ConvertToUltraCalcValue called:" ); // Context parameter is the object associated with the cell value. It's either // an UltraGridCell or SummaryValue instance in the case of UltraWinGrid // objects however it could be UltraCalcSettings or NamedReference instances // as well if the formula refers to a control outside of the grid or a named // reference. System.Diagnostics.Debug.WriteLine( " Context is " + context.GetType( ).Name ); if ( null == cellValue || DBNull.Value == cellValue ) { System.Diagnostics.Debug.WriteLine( " Value being converted is (NULL)" ); return new UltraCalcValue( cellValue ); } System.Diagnostics.Debug.WriteLine( " Value being converted is " + cellValue.ToString( ) ); double val = double.Parse( cellValue.ToString( ) ); return new UltraCalcValue( val ); } } private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) { UltraGridColumn column = this.ultraGrid1.DisplayLayout.Bands[0].Columns[0]; // Add a summary that calculates the total of the column. SummarySettings summary = column.Band.Summaries.Add( "sum( [" + column.Key + "] )" ); // Set the FormulaValueConverter on both the column and summary. column.FormulaValueConverter = new CustomFormulaValueConverter( ); summary.FormulaValueConverter = new CustomFormulaValueConverter( ); }
UltraGridColumn クラス
UltraGridColumn メンバ
Infragistics.Win.CalcEngine.IFormulaValueConverter
Formula プロパティ
CalcManager プロパティ