首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

修改cxgird某列的值报错,该怎么解决

2012-03-22 
修改cxgird某列的值报错大家好,我遇到这样一个问题,cxgrid连接数据库显示数据后,我想用cxgrid的gridview单

修改cxgird某列的值报错
大家好,我遇到这样一个问题,cxgrid连接数据库显示数据后,我想用cxgrid的gridview单击事件来修改cxgrid选中行特定列的数据:
  代码是这样的:
 procedure TFESchedule.DataGrid_ViewCellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  with query1 do
  begin
  edit;
  fieldbyname('Data_Value').value:=1;
  post;
  end;
end
  上面如果不用post的话,就不会提示:access violation at address 0062a428这个错,但是需要用鼠标移开当前行的焦点才会提交成功修改的数据。

  再或者,我先选中要修改的数据,然后在用button单击事件中写上面的修改代码也是没有问题;

  请教各位是什么原因啊???多谢了!
 

[解决办法]
你修改数据感知控件的数据时,如果没有移动焦点,或没有执行保存操作,
这个数据还是原来的,也就是内存预存(缓存)的数据,而你修改的数据,还在数据感知控件上,
并没有覆盖内存预存(缓存)的数据,这个是便于操作人员对你当前修改的数据进行确认,
确认的判断就是:焦点移开,或执行保存操作,或其它赋值操作。
一旦确认,就会覆盖掉缓存的数据。
[解决办法]
cxgrid应该有afterscroll属性的。在修改处理的时候应该把该指针置nil

热点排行