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

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

Open in new window


Who can help me?

Greetings,

Peter Kiers
LVL 1
peterkiersAsked:
Who is Participating?
 
käµfm³d 👽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(".");
}

Open in new window

0
 
zofcentrCommented:
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);

Open in new window


Please note that 8 is correct integer but also correct decimal.
0
 
peterkiersAuthor 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
0
Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

 
BuggyCoderCommented:
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"));
}

Open in new window

0
 
peterkiersAuthor Commented:
I have thought about this and came up with another solution:

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
0
 
käµfm³d 👽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;
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
    }
}

Open in new window

0
 
peterkiersAuthor 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
0
 
peterkiersAuthor Commented:
I was to soon with posting Kaufmed gave me the right solution.

Peter
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.