IBindingRangeValueConverter Interface
An interface that allows you to convert cell values to custom objects and back.
Namespace: DevExpress.Spreadsheet
Assembly: DevExpress.Spreadsheet.v24.2.Core.dll
NuGet Package: DevExpress.Spreadsheet.Core
#Declaration
#Related API Members
The following members return IBindingRangeValueConverter objects:
#Remarks
A custom converter that exposes the IBindingRangeValueConverter interface can be specified using the DataSourceOptionsBase.CellValueConverter property.
#Example
This code snippet contains the code of the converter which provides the IBindingRangeValueConverter.TryConvertFromObject method used to convert fields of a custom WeatherReport object for proper display in a worksheet and the IBindingRangeValueConverter.ConvertToObject method for storing cell values in the fields of a custom object.
public class MyWeatherConverter : IBindingRangeValueConverter {
public object ConvertToObject(CellValue value, Type requiredType, int columnIndex) {
if (requiredType == typeof(DateTime))
return value.DateTimeValue;
if (requiredType == typeof(Weather)) {
if (requiredType == typeof(Weather)) {
Weather w;
if (Enum.TryParse(value.TextValue, out w)) return w;
return Weather.Undefined;
}
else
return value.TextValue;
}
if (requiredType == typeof(List<HourlyReport>))
return new List<HourlyReport>();
return value.TextValue;
}
public CellValue TryConvertFromObject(object value) {
if (value is DateTime) {
return ((DateTime)value).ToString("MMM-dd");
}
if (value is Weather) {
return value.ToString();
}
if (value is List<HourlyReport>) {
var hourly = (List<HourlyReport>)value;
if (hourly.Count == 0) return "Undefined";
var high = hourly
.OrderByDescending(p => p.Temperature)
.FirstOrDefault()
.Temperature;
var low = hourly
.OrderBy(p => p.Temperature)
.FirstOrDefault()
.Temperature;
return String.Format("High - {0}, Low - {1}", high, low);
}
return CellValue.TryCreateFromObject(value);
}
}
public class WeatherReport {
[DisplayName("Date")]
public DateTime Date { get; set; }
[DisplayName("Weather Condition")]
public Weather Weather { get; set; }
[DisplayName("Max and Min Temperature")]
public List<HourlyReport> HourlyReport { get; set; }
}
public class HourlyReport {
public int Hour { get; set; }
public int Temperature { get; set; }
}
public enum Weather {
Sunny,
Cloudy,
Windy,
Gloomy,
Foggy,
Misty,
Rainy,
Undefined
}