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 👽Connect With a Mentor 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
 
zofcentrConnect With a Mentor 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);

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
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
BuggyCoderConnect With a Mentor 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"));
}

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.