Как реализовать столбец DataGridView, который может отображаться в разных единицах? - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть DataGridView (.NET winforms), привязанный к коллекции.Одно из полей - это расстояние в футах.Но сетка должна отображаться в футах или метрах (но всегда храниться в футах) в зависимости от настроек системы.Как мне это сделать?Такое ощущение, что мне нужно использовать событие CellParsing для преобразования значения в футы (если настройка отображения - метры) при вводе пользователем.Кроме того, мне также нужно использовать событие CellFormatting, чтобы преобразовать отображаемое значение в метры, если для настройки дисплея установлено значение «Метры».Это звучит правильно или есть более простой способ?

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

Самый простой способ - добавить свойство, которое применяет вычисление:

[DisplayName("Distance (feet)")]
public decimal DistanceFeet {get;set;}
[DisplayName("Distance (metres)")]
public decimal DistanceMetres {
    get { return FeetToMetres(DistanceFeet); }
    set { DistanceFeet = MetresToFeet(value); }
}

Лично я также использую счетчики в качестве основного устройства, но это только я;)

Теперь просто свяжите данные либо, либо покажите / скройте столбцы, как вам удобно.

1 голос
/ 14 ноября 2011

Почему бы вам не внедрить эту логику в модель данных?

вот так

 class SomeDataModel : DataModelBase {

      public SomeEntityType Entity { get; private set; }

      public float Distance {
           get {
                return MetrixConvertionHelper.ConvertAccordingToSistemSettings(this.Entity.DistanceInFeets);
           }
           set {
                this.Entity.DistanceInFeets = MetrixConvertionHelper.ConvertDistanceBack(value);
           }
      }

 }

, где MetrixConvertionHelper.ConvertAccordingToSistemSettings(float) - ваша функция преобразования-помощника, SomeDataModel - данныекласс модели, DistanceInFeets - исходное свойство типа вашей сущности, заключенное в модель данных, а MetrixConvertionHelper.ConvertDistanceBack(float) - это вспомогательный вспомогательный метод, который преобразует текущие единицы измерения в футы

...