C# 验证失败时的DataGridView默认值
我正在使用DataGridView文本列。该列绑定到DataTable中的十进制列 如果我编辑单元格使其有一个空值,然后将其制表,我会得到一个关于解析十进制数问题的异常 我理解为什么会发生这种情况,为了解决这个问题,我只想强制值为“0.00”,但我似乎无法让它工作 我尝试了以下方法,但无效:C# 验证失败时的DataGridView默认值,c#,validation,datagridview,C#,Validation,Datagridview,我正在使用DataGridView文本列。该列绑定到DataTable中的十进制列 如果我编辑单元格使其有一个空值,然后将其制表,我会得到一个关于解析十进制数问题的异常 我理解为什么会发生这种情况,为了解决这个问题,我只想强制值为“0.00”,但我似乎无法让它工作 我尝试了以下方法,但无效: private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { i
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == amountIdx)
{
if (e.FormattedValue == "")
dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00";
}
}
我可以设置e.Cancel=true,而不是设置值,但这只会让它处于编辑模式,这不是我真正想要的。更改:
if (e.FormattedValue == "")
dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00";
致:
我想出来了。该值似乎在CellValidating激发后重置。我没有更新实际的基础值,而是将EditingControl设置回“0.00”。通过完成CellValidation后,新值将保存到数据源
if (e.FormattedValue == "")
dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00m";