我发现在cxgrid中输入数据后需要将焦点称出其它位置才能将数据更新到数据集,如果不移动的话数据集中记录是就是更改前的数据了,
请问有没有什么办法在一输入数据就马上更新到数据集呢!

解决方案 »

  1.   

    <Properties>
    ImmediatePost:=true;
    ImmediateUpdate:=true;
      

  2.   

    可以在 TableView的EditValueChanged里判断:   if DataSet.State in [dsinsert, dsedit] then
        DataSet.Post;
      

  3.   

    iamduo 提供的方法多试过了不行,
    wxsan 方法也试过了,好像都没用
      

  4.   

    哈哈,终于解决了,使用一下语句:
    cxGrid1DBTableView1.DataController.PostEditingData;
    wyd531可以试试
      

  5.   


    我估计我俩的意思一样,但跟lz的想法不同。
    lz 是要一边输入,一边在另一个控件里直接显示输入的内容。
    抽象理解成 
    procedure Edit1.OnChange;
    begin
      Label1.Caption:=Edit1.Text;
    end;
    达到 DBEdit 和 DBLabel 的效果所以他用了PostEditingData ( 估计是写在栏的OnChange事件里了。)
    就是把在正在编辑中的内容提交数据集。
      

  6.   

    用TcxGridDBColumn→Properties→onValidate事件的DisplayValue参数
    如下:
    procedure TSFCTGForm.tvSFCTGTG005PropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
    begin
      edTG005.Value := edTG005.Value + DisplayValue - tvSFCTGTG005.EditValue;
    end;