0

Ultrawingrid に、整数データを含む文字列列があります。その列で千区切り記号を使用する必要があります。しかし、format プロパティを使用したときに、文字列列では機能しないことに気付きました。

誰かがそれを行う方法を知っていますか?

4

1 に答える 1

4

IDataFilter 派生クラスを列の Editor.DataFilter プロパティに関連付ける必要があります。たとえば、文字列型の「NumberCode」という名前のバインドされた列があるとします。このコードをグリッドの InitializeLayout イベントに配置します。

UltraGridColum cl = e.DisplayLayout.Bands[0].Columns["NumberCode"];
cl.Editor.DataFilter = new ThousandSeparator();

次に、次のようにインターフェイス IDataFilter を実装する単純なクラスを作成します。

public class ThousandFormatter : IEditorDataFilter
{
    public ThousandFormatter()
    { }

    public object Convert(EditorDataFilterConvertArgs conversionArgs)
    {
        if (conversionArgs.Direction == ConversionDirection.OwnerToEditor)
        {
            UltraGridCell cell = conversionArgs.Context as UltraGridCell;
            if (cell != null && cell.Column.Key == "NumberCode")
            {
                conversionArgs.Handled = true;
                decimal dValue = System.Convert.ToDecimal(conversionArgs.Value);
                return dValue.ToString("#,##0");
            }
        }
        return conversionArgs.Value;
    }
}
于 2012-03-15T12:24:46.820 に答える