我想实现的效果是:当我编辑一个单元格时,另一个单元格的值会自动更新即:C=A-B;但在更新前要做验证,那么如何写呢,发现如果写在validing里会出现死循环。
我的代码:private void gv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
iSpSuplus = Tg.Base.DataExd.GetInt(gv["gvColSpBillNum", e.RowIndex].Value) - Tg.Base.DataExd.GetInt(e.FormattedValue);
if (iSpSuplus < 0)
{
e.Cancel = true;
Util.ShowAlert("冲销数量不得大于原数量");
gv.CancelEdit();
}
else
{
gv.Rows[e.RowIndex].Cells["gvColSurplusNum"].Value = iSpSuplus;
}
}怎么搞作啊
我的代码:private void gv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
iSpSuplus = Tg.Base.DataExd.GetInt(gv["gvColSpBillNum", e.RowIndex].Value) - Tg.Base.DataExd.GetInt(e.FormattedValue);
if (iSpSuplus < 0)
{
e.Cancel = true;
Util.ShowAlert("冲销数量不得大于原数量");
gv.CancelEdit();
}
else
{
gv.Rows[e.RowIndex].Cells["gvColSurplusNum"].Value = iSpSuplus;
}
}怎么搞作啊
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{ //可编辑的列
if (e.ColumnIndex != 2 && e.ColumnIndex != 3)
return; iSpSuplus = Tg.Base.DataExd.GetInt(gv["gvColSpBillNum", e.RowIndex].Value) - Tg.Base.DataExd.GetInt(e.FormattedValue);
if (iSpSuplus < 0)
{
e.Cancel = true;
Util.ShowAlert("冲销数量不得大于原数量");
gv.CancelEdit();
}
else
{
gv.Rows[e.RowIndex].Cells["gvColSurplusNum"].Value = iSpSuplus;
}
}
+10086本来就是两个事件,一个是验证,一个是赋值,赋值肯定是当验证通过之后的,所以最好放在cellvaluechanged事件中。
验证不通过,值肯定是不会变的。
事件上,我建议写自定义控件,验证不放在CellValidating中,而是写在继承的textbox中,不过这有点复杂了,你的需求应该用不着