Click here to Skip to main content
15,888,802 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi, in gridview i want few columns should accept only numbers 0to9 and decimal point. and few columns should accept only letters a to z.
I tried with keypress event but not working...
Posted
Comments
Hiren solanki 1-Dec-10 1:36am    
use OnChange Javascript event either.
Jason C Daniels 17-Jan-11 0:42am    
Are you using Winforms?

<pre lang="cs">private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
{
if (e.ColumnIndex == 0 &amp;&amp; dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Length &gt; 0)
{
Regex objAlphaPattern = new Regex(&quot;[*a-zA-Z]&quot;);
if (objAlphaPattern.IsMatch(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()))
{
}
else
{
MessageBox.Show(&quot;Only Alphabet Value&quot;);
dataGridView1.Columns[e.ColumnIndex].Selected = false;
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = &quot;&quot;;

}
}
else if (e.ColumnIndex == 1 &amp;&amp; dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Length &gt; 0 )
{
decimal number;
if (Decimal.TryParse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), out number)) {
}
else
{
MessageBox.Show(&quot;Only Decimal Value&quot;);
dataGridView1.Columns[e.ColumnIndex].Selected = false;
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = &quot;&quot;;
}
}
}
}</pre>
 
Share this answer
 
First you create gridview contain two columns .One for letters/alphaber test and another one is number/decimal test. After two columns created , you write following code in CellValueChanged event.

C#
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1)
            {
                if (e.ColumnIndex == 0 && dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Length > 0)
                {
                    Regex objAlphaPattern = new Regex("[*a-zA-Z]");
                    if (objAlphaPattern.IsMatch(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()))
                    {
                    }
                    else
                    {
                        MessageBox.Show("Only Alphabet Value");
                        dataGridView1.Columns[e.ColumnIndex].Selected = false;
                        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "";

                    }
                }
                else if (e.ColumnIndex == 1 && dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Length > 0 )
                {
                    decimal number;
                    if (Decimal.TryParse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), out number)) {
                    }
                    else
                    {
                        MessageBox.Show("Only Decimal Value");
                        dataGridView1.Columns[e.ColumnIndex].Selected = false;
                        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "";
                    }
                }
            }
        }


And then you can test.

Best Regard

Theingi Win
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900