none
DataGridView中列或单元格数据类型判断要怎么处理 RRS feed

  • 问题

  • 如何使DataGridView单元格在编辑时判断数据类型是否正确。附注:判断是否为空我会写,但是判断数据类型没写过,不知怎么处理。请会的人指导一下。谢谢!


    Raymond

    2012年3月2日 8:19

答案

  • 建议用正则表达式来写,比如验证数字:

    private void tb_CcangDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (tb_CcangDataGridView.Columns[e.ColumnIndex].Name == "dataGridViewTextBoxColumn2") {

    Regex reg = new Regex("^\\d+$"); if (!reg.Match(tb_CcangDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()).Successful) { tb_CcangDataGridView.Rows[e.RowIndex].ErrorText = "CpID Name must not be Empty"; e.Cancel = true; }
    } }


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月3日 2:21
    版主
  • dear

    你应该在用户输入时就排除掉这个问题,否则资料写入DataTable后会更难判断,先过滤使用者按下的键盘,然后再用转型判断,只有你自己知道哪一栏位要用啥形态

    http://www.dotblogs.com.tw/yc421206/archive/2010/10/15/18370.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2010/11/10/19345.aspx

    或者,使用类别绑定到DataGridView,连判断都不用判断,只要用户输入错误的形态,就无法离开焦点

    http://www.dotblogs.com.tw/yc421206/archive/2011/03/07/21706.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2012年3月5日 4:27

全部回复

  • 请问您要的是?
    int intValue = 1;
    MessageBox.Show((intValue.GetType().Name ).ToString());

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年3月2日 9:03
  • I'm so sorry!

    嘿嘿!估计是我没把问题说明清楚。

            private void tb_CcangDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
            {
                if (tb_CcangDataGridView.Columns[e.ColumnIndex].Name == "dataGridViewTextBoxColumn2")
                {
                    if (String.IsNullOrEmpty(e.FormattedValue.ToString()))
                    {
                        tb_CcangDataGridView.Rows[e.RowIndex].ErrorText = "CpID Name must not be Empty";
                        e.Cancel = true;
                    }
                }
            }
    
            private void tb_CcangDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                tb_CcangDataGridView.Rows[e.RowIndex].ErrorText = String.Empty;
            }
    

    以上代码段就是判断datagridview中

    某一个单元格是否为空的功能代码。

    但是我除了判断单元格是否为空以外,还需要判断填写进单元格的数据类型是否符合要求,例如:某一单元格要求的数据类型是数值型的,而用户却填写成汉字,这时我们应该让程序提示错误提醒,可是我不会写。

    现在能明白我的意思吗?如果明白,并且你能解决这个问题的话,请指导我一下。万分感谢!


    Raymond

    2012年3月2日 9:17
  • 建议用正则表达式来写,比如验证数字:

    private void tb_CcangDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (tb_CcangDataGridView.Columns[e.ColumnIndex].Name == "dataGridViewTextBoxColumn2") {

    Regex reg = new Regex("^\\d+$"); if (!reg.Match(tb_CcangDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()).Successful) { tb_CcangDataGridView.Rows[e.RowIndex].ErrorText = "CpID Name must not be Empty"; e.Cancel = true; }
    } }


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月3日 2:21
    版主
  • dear

    你应该在用户输入时就排除掉这个问题,否则资料写入DataTable后会更难判断,先过滤使用者按下的键盘,然后再用转型判断,只有你自己知道哪一栏位要用啥形态

    http://www.dotblogs.com.tw/yc421206/archive/2010/10/15/18370.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2010/11/10/19345.aspx

    或者,使用类别绑定到DataGridView,连判断都不用判断,只要用户输入错误的形态,就无法离开焦点

    http://www.dotblogs.com.tw/yc421206/archive/2011/03/07/21706.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2012年3月5日 4:27