我有一个自动绑定的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;
}
}
}
答案 0 :(得分:4)
DataGridView上有Row / CellValidating事件,如果输入无效,您可以使用这些事件验证输入并取消事件 - 这会使行/单元格处于编辑模式。