DataGridView验证失败时的默认值

时间:2015-04-21 01:36:29

标签: c# validation datagridview

我正在使用DataGridView文本列。该列绑定到DataTable中的十进制列。

如果我编辑单元格以获得一个空值然后标签,我会得到一个关于解析小数的问题的例外。

我理解为什么会发生这种情况并解决它我只想强制该值为“0.00”但我似乎无法让它工作。

我尝试了以下但是没有用:

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而不是设置值,但只是将它保留在编辑模式中,这不是我真正想要的。

2 个答案:

答案 0 :(得分:0)

变化:

if (e.FormattedValue == "")
    dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00";

为:

if (e.FormattedValue == "")
    dataGridView1[e.ColumnIndex, e.RowIndex].Value = "0.00m";

On using "M/m" to annotate decimal values.

答案 1 :(得分:0)

我明白了。在CellValidating触发后,该值似乎已重置。我不必更新实际的基础值,而是将EditingControl设置回" 0.00"。 CellValidating完成后,新值将保存到数据源。