解决方案 »

  1.   

    为什么不触发,int型的单元格里输入了XYZ,能行么要么就绑定个每一列类型都是string的datatable,就可以随便写了但是这个数据如何更新回原始的表中,就只能自己写代码了
      

  2.   

    数据的合法性希望自己来定义,不想让DataGridView触发DataError,数据源是从数据库读取出来的DataError对数据的合法性判断又不准确...
      

  3.   

    DataError对数据的合法性判断又不准确... 
    ->
    DataError判断的是数据对于datagridview的合法性,其实就是对于datatable的合法性
    虽然datatable里面其实都是object,但是列还是有类型的.
    datatable的某一列是datetime类型,你往里面放汉字,当然会报错的如果就是想屏蔽,那就数据库读出来,都转字符串,放到新的datatable里,绑定
    更新的时候,自己写insert和update语句
      

  4.   

    那就用普通的text类型列,输入什么文字,数字都不会报错
      

  5.   

    我感觉不像你说的那样
    左边那列输入字母符号都会触发DataError事件但右边就不会,从数据库读取的话两边都是数字类型...
      

  6.   

    DataGridView是通过数据源绑定的怎么改成Text类型,求解...
      

  7.   

    读取数据库,放到dt
    新建datatable dt1=dt.clone();
    循环列,修改columnType为typeof(string)
    循环将dt赋值到dt1
    绑定dt1
      

  8.   

    重写DataError事件,下面是一个例子
            private void dgvItemInfo_DataError(object sender, DataGridViewDataErrorEventArgs e)
            {  
               bool handle;
                if (dgvItemInfo.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.Equals(DBNull.Value))
                {
                   handle = true;
                } 
                else
                {
                    handle = false;
                    e.Cancel = handle;
                }
            }