Ячейки формата ASP.NET GridView - PullRequest
2 голосов
/ 17 марта 2009

У меня есть класс SpecialGridView, который наследуется от GridView.

С другой стороны, у меня есть страницы отчетов, которые используют этот SpecialGridView для отображения данных.

Для свойства autogeneratedcolumns было задано значение true, и я хотел бы оставить этот параметр.

Чтобы поместить формат данных, я переопределил «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

1 Ответ

0 голосов
/ 17 марта 2009

Это решение (с отражением):

  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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...