C# DevExpress-设置单元格值-类型为'的未处理异常;System.StackOverflowException';发生在mscorlib.dll中

C# DevExpress-设置单元格值-类型为'的未处理异常;System.StackOverflowException';发生在mscorlib.dll中,c#,gridview,devexpress,C#,Gridview,Devexpress,我有以下代码(gridview、cellvaluechanged事件): “days_worked”是从label控件获取的值,单元格的值不变, 出现以下错误:mscorlib.dll中发生类型为“System.StackOverflowException”的未处理异常 “totalvalue”是我数据库中的一列 请帮忙,谢谢 如文档中所述 CellValueChanged事件触发,以响应正在更改的单元格值。下表给出了引发此事件的可能原因: 最终用户在更改编辑器的名称后关闭了在位编辑器 价值观

我有以下代码(gridview、cellvaluechanged事件):

“days_worked”是从label控件获取的值,单元格的值不变, 出现以下错误:mscorlib.dll中发生类型为“System.StackOverflowException”的未处理异常

“totalvalue”是我数据库中的一列


请帮忙,谢谢

如文档中所述

CellValueChanged事件触发,以响应正在更改的单元格值。下表给出了引发此事件的可能原因:

  • 最终用户在更改编辑器的名称后关闭了在位编辑器 价值观
  • 已使用提供的方法更改单元格的值 意见。例如,SetRowCellValue方法可用于此目的 目的
因此,您需要根据建议文档更改代码

private void gv1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
    if (e.Column.Caption != "totalvalue") return; // if event in fire from cells in column "totalvalue"

    string value1 = Convert.ToString(gv1.GetRowCellValue(gv1.FocusedRowHandle, "unitvalue"));
    object cellValue = Convert.ToUInt32(value1) * Convert.ToInt32(days_worked);
    gv1.SetRowCellValue(gv1.FocusedRowHandle, "totalvalue", cellValue);
}

我认为
SetRowCellValue
内部提升事件
CellValueChanged
,因此您需要或另一个事件,或使用另一个函数来设置值不知道这一点,3天内相同,Omgy您使用winforms吗?webforms?尝试查看+1-stackoverflow的原因是在
CellValueChanged
事件中,您设置了一个单元格值-这会再次触发事件-因此它进入“循环”,直到您获得异常。非常感谢GUY,您救了我的命,感谢您对社区的帮助
private void gv1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
    if (e.Column.Caption != "totalvalue") return; // if event in fire from cells in column "totalvalue"

    string value1 = Convert.ToString(gv1.GetRowCellValue(gv1.FocusedRowHandle, "unitvalue"));
    object cellValue = Convert.ToUInt32(value1) * Convert.ToInt32(days_worked);
    gv1.SetRowCellValue(gv1.FocusedRowHandle, "totalvalue", cellValue);
}