private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
{
if (e.Column.FieldName == "Value")
{
if (Properties.Settings.Default.IsMGDL==false)
{
e.DisplayText = (value / 18).ToString();
}
else if (Properties.Settings.Default.IsMGDL==true)
{
e.DisplayText = (value * 18).ToString();
}
}
}
}
using System;
using System.Globalization;
using System.Threading;
namespace _27631360
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetValueType("8").ToString());
Console.WriteLine(GetValueType("8.00").ToString());
Console.WriteLine(GetValueType(" 8").ToString());
Console.WriteLine(GetValueType("8 ").ToString());
Console.WriteLine(GetValueType(" 8 ").ToString());
Console.WriteLine(GetValueType(" .8").ToString());
Console.WriteLine(GetValueType("8,000").ToString());
Console.WriteLine(GetValueType("8,000.00").ToString());
Console.WriteLine(GetValueType("8a.00").ToString());
Console.ReadKey();
}
static NumericType GetValueType(string value)
{
NumericType result = NumericType.Integer;
NumberFormatInfo numFormat = Thread.CurrentThread.CurrentCulture.NumberFormat;
value = value.Trim();
for (int i = 0; i < value.Length; i++)
{
if (value[i] == numFormat.CurrencyDecimalSeparator[0])
{
if (result == NumericType.Double)
{
return NumericType.NonNumeric;
}
else
{
result = NumericType.Double;
}
}
else if (value[i] == numFormat.CurrencyGroupSeparator[0])
{
continue;
}
else if (!char.IsNumber(value[i]))
{
return NumericType.NonNumeric;
}
}
return result;
}
}
public enum NumericType
{
NonNumeric,
Integer,
Double
}
}
And another approach would be to check if a value has a comma or a period in it.
Peter