如何防止在DataGridViewCell中输入错误的格式化数据

时间:2010-06-16 09:17:02

标签: c# .net ado.net datagridview

我有一个自动绑定的DataGridView,它可以直接从Strongly Typed Dataset及其TableAdapter获取数据并更新数据。

DataGridView允许数据编辑,但我遇到了处理格式错误数据输入的问题。

例如,其中一列是日期,在数据库中格式化为datetime,11/05/2010。您可以修改日期,DataGridView会打开TextBox,您可以在其中输入字母,符号和其他未经授权的字符。完成编辑单元格后,如果有这么糟糕的数据,它会抛出System.FormatException

如何防止输入某些数据?

有没有办法在将数据发送回DataGridView之前“过滤”该数据?

=============================================== ==========================

正如艾伦所说,关键是处理cellValidating事件。我将附上一些有助于处理价值的代码:

public static void CellValidating(object sender, System.Windows.Forms.DataGridViewCellValidatingEventArgs e)
    {

        string newValue = e.FormattedValue.ToString();
        string oldValue = ((System.Windows.Forms.DataGridView)(sender)).Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();

        //i like to check that the value has changed before validating it
        if (newValue != oldValue)    
        {
            if (false)//replace this with actual validation.        
            {
                //if data not valid cancel validation
                e.Cancel= true;
            }
        }

    }

1 个答案:

答案 0 :(得分:4)

DataGridView上有Row / CellValidating事件,如果输入无效,您可以使用这些事件验证输入并取消事件 - 这会使行/单元格处于编辑模式。