0

グリッドの列の FormatString プロパティを条件付きで変更したいと考えています。

入力は double です。

私がやりたいことは次のとおりです。

if (cellValue % 1 == 0)
    aColumn.DisplayFormat.FormatString = "N0";
else
    aColumn.DisplayFormat.FormatString = "N2";

列の各値をチェックせずに実行時にそれを行う方法はありますか?

助けていただければ幸いです、ありがとう!

4

2 に答える 2

1

@kenrogersによって実証されたColumnView.CustomColumnDisplayTextイベントを処理するアプローチを使用できます。

または、この列にカスタム書式設定機能を使用できます。

aColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
aColumn.DisplayFormat.Format = new CustomDoubleFormatter();

public class CustomDoubleFormatter : IFormatProvider, ICustomFormatter {
    public object GetFormat(Type format) {
        return this;
    }
    public string Format(string format, object arg, IFormatProvider provider) {
        bool hasFractionalPart = ((double)arg % 1.0 > double.Epsilon);
        return string.Format(hasFractionalPart ? "{0:N2}" : "{0:N0}", arg);
    }
}

PS セル値の書式設定の詳細については、セル値の書式設定のヘルプ記事を参照してください。

于 2013-05-06T15:09:11.127 に答える