We help IT Professionals succeed at work.

# Determine if user enters a integer or a double value into a cell of a grid.

on
Dear Experts,

I use a grid from DevExpress on my form. What I would like is a methode to check
if a user enters an integer-value (f.e: 8) or a double value (f.e: 8,8) into the cells
of column called colValue (fieldname = "Value").

I wrote it in psuedo-code:

if the column fieldname = Value
if (IsMGDL == false || value is a interger-value)
then devide (/) the value with 18
if (IsMGDL == true|| value is a double-value)
then x the value  with 18

I have begun to do this myself and this is al I got:

``````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();
}
}
}
}
``````

Who can help me?

Greetings,

Peter Kiers
Comment
Watch Question

## View Solutions Only

Commented:
Try something like this:

``````int outputInteger;
decimal outputDecimal;
String value = "8,8";
bool isInteger, isDecimal;
isInteger = int.TryParse(value, out outputInteger);
isDecimal = decimal.TryParse(value, out outputDecimal);
value = "8";
isInteger = int.TryParse(value, out outputInteger);
isDecimal = decimal.TryParse(value, out outputDecimal);
``````

Please note that 8 is correct integer but also correct decimal.
Operator

Commented:
I'm not exactly sure what to do with this code.

And another approach would be to check if a value has a comma or a period in it.

Peter
Commented:
Although above solution seems to fit your requirement, just thought that a more generic version would be more helpful in case you need to check against more types.

Have a look:-

``````public static bool CheckType<TValue>(string val)
where TValue : struct
{
bool retVal = false;

switch(Type.GetTypeCode(typeof(TValue)))
{
case TypeCode.Double:
double valueDouble;
retVal= double.TryParse(val, out valueDouble);
break;

case TypeCode.Int32:
int valueInt;
retVal= int.TryParse(val, out valueInt);
break;
}

return retVal;
}

public static void Check()
{
Console.Writeline(CheckType<double>("8.8"));
Console.Writeline(CheckType<int>("8"));
}
``````
Operator

Commented:

I want a function that checks if a value entered in a cell has a comma (,) or
period (.) in it. If not then give false else true.

And use this function in my gridView1_CustomColumnDisplayText methode.

Peter
CERTIFIED EXPERT
Most Valuable Expert 2011
Top Expert 2015

Commented:
You could write your own method for such a task. For example, you could create an enum to represent the appropriate "types" and parse the value from within the method. Here is a rudimentary example. It may work for your environment, but you may need to tweak it as well.

``````using System;
using System.Globalization;

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());
}

static NumericType GetValueType(string value)
{
NumericType result = NumericType.Integer;

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
}
}
``````
CERTIFIED EXPERT
Most Valuable Expert 2011
Top Expert 2015
Commented:
I want a function that checks if a value entered in a cell has a comma (,) or
period (.) in it. If not then give false else true.

For that it could be as simple as:

``````static bool AFunction(string value)
{
return value.Contains(",") || value.Contains(".");
}
``````
Operator

Commented:
I have this:

public static bool CheckType(string strToTransform)
{
decimal result;
if (!decimal.TryParse(strToTransform as string, out result))
{
// return false
}

if (strToTransform.Contains("."))
{
//return true
}
if (strToTransform.Contains(","))
{
//return true
}
return ????
}

Can someone help me with this.

Peter
Operator

Commented:
I was to soon with posting Kaufmed gave me the right solution.

Peter