代码如下 
 //全选
  dbgrd.selectedrows.currentrowselected := true;
  dsmain.DataSet.First;
  while not dsmain.DataSet.eof do
  begin
    dbgrd.selectedrows.currentrowselected:= true;
    dsmain.DataSet.Edit;
    dsmain.DataSet.FieldByName('selectboolean').AsBoolean := true;
    //dbgrd.Columns[1].CheckboxState := cbchecked;
    dsmain.DataSet.next;
  end;
  dsmain.DataSet.Cancel;
很奇怪的是cancel执行到了可是selectboolean的值照样能保存