2009-03-17 15 views
2

GridViewを継承するSpecialGridViewというクラスがあります。ASP.NET GridView形式のセル

一方、私はこのSpecialGridViewを使ってデータを表示しているレポートページを持っています。

プロパティautogeneratedcolumnsがtrueに設定されていましたので、このオプションを使用します。

データ形式を設定するために、データが "Decimal"の場合、 "CreateAutoGeneratedColumn"をオーバーライドしてこの型のデータの形式を確定しました。しかし、私は例外 "NotSupportedException"を得ています

それを解決する方法についての任意のアイデア?
ありがとうございます。ここで

私が書いたコード:

protected override AutoGeneratedField CreateAutoGeneratedColumn(AutoGeneratedFieldProperties fieldProperties) 
{ 
    AutoGeneratedField field = new AutoGeneratedField(fieldProperties.DataField); 
    field.HtmlEncode = false; 
    string name = fieldProperties.Name; 
    ((IStateManager)field).TrackViewState(); 
    field.HeaderText = name; 
    field.SortExpression = name; 
    field.ReadOnly = fieldProperties.IsReadOnly; 
    field.DataType = fieldProperties.Type; 

    if (field.DataType == typeof(Decimal)) 
    { 
     field.DataFormatString= "{0:0.00}"; 
    } 
    return field; 
} 

ご挨拶を。

Josema

答えて

0

これは、(反射付き)溶液である:

protected override AutoGeneratedField CreateAutoGeneratedColumn(AutoGeneratedFieldProperties fieldProperties) 
    { 
    AutoGeneratedField field = new AutoGeneratedField(fieldProperties.DataField); 
       StateBag sb = (StateBag)field.GetType().InvokeMember("ViewState",BindingFlags.GetProperty|BindingFlags.NonPublic|BindingFlags.Instance,null,field, new object[] {}); 
       field.HtmlEncode = false; 
       string name = fieldProperties.Name; 
       ((IStateManager)field).TrackViewState(); 
       field.SortExpression = name; 
       field.ReadOnly = fieldProperties.IsReadOnly; 
       field.DataType = fieldProperties.Type; 
       if (field.DataType == typeof(Decimal)) 
       { 
        sb["DataFormatString"]= "{0:c}"; 
       } 
       if (field.DataType == typeof(DateTime)) 
       { 
        sb["DataFormatString"] = "{0:d}"; 
       } 
       return field; 
    } 
関連する問題