DevExpress - 设置单元格值 - mscorlib.dll中发生未处理的“System.StackOverflowException”类型异常

时间:2014-01-30 06:20:44

标签: c# gridview devexpress

我有这个代码(gridview,cellvaluechanged事件):

      private void gv1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
string value1 = Convert.ToString(gv1.GetRowCellValue(gv1.FocusedRowHandle, "unitvalue"));
object cellValue = Convert.ToUInt32(value1) * Convert.ToInt32(days_worked);
 gv1.SetRowCellValue(gv1.FocusedRowHandle, "totalvalue", cellValue);
}

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

“totalvalue”是我数据库的一列

请帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

如文档中所述

  

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);
}