我现在用了一个循环所有选中行(i是循坏的数),再改变某一列的值(那一列是Combobox属性),如下代码。。cxGrid2DBBandedTableView1.DataController.Controller.SelectedRecords[i].Values[4]:='test111';表面上值是改变的,但只要我把鼠标点在那一列上,显示是还是旧的那个值。。
实际数据还是没有改变。。数据源我是设了ltBatchOptimistic模式的..

解决方案 »

  1.   

    去的该行的数据记录的id字段值,然后根据这个id去update数据库中的记录,最后刷新数据
      

  2.   

    我用了ltBatchOptimistic模式就是不想立即更新数据库~
      

  3.   

    这个我是循环两次实现的,第一次从grid那里获取ID值,第二次用ID值locate dataset里的记录,然后修改。我也想知道一个简洁快速的方法!期待高手出现!
    --------------------------------------------
    欢迎各位有空踩一下我的博客
      

  4.   

    遍历你选择的所有行,然后取出当前行的标识列,再根据标识列Locate定位到数据集,然后修改combobox的ID
      

  5.   


    var
      n,Row:Ineteger;
      SqlStr :string;
    begin 
      n:=cxGridDBQuery.GetColumnByFieldName('AssBarCode').Index;// AssBarCode 字段名字
      for Row:=0 to cxGridDBQuery.DataController.GetSelectedCount - 1 do
      begin
        D :=cxGridDBQuery.DataController.GetSelectedRowIndex(Row); 
        ACode :=cxGridDBQuery.ViewData.Rows[D].Values[n];
        SqlStr :=SqlStr +' or AssBarCode='''+ACode+'''';
        showmessage(sqlstr);
        //下面你可以定位数据集,然后再修改ID值
      end;
    end;
      

  6.   

    我用以下代码搞定了~~但是速度有点慢..谁有高效一点的方法啊?cxGrid1BandedTableView1.DataController.UpdateData;
      if AItem.EditValue<>'' then begin
        id:=cxGrid1BandedTableView1.Controller.FocusedColumn.Index;
        for i:=0 to cxGrid2DBBandedTableView1.Controller.SelectedRecordCount-1 do begin
          with dmMain.ADOQy do begin
            if Active then Close;
            SQL.Clear;
            SQL.Add('select top 1 par_udf1_nv,par_udf2_nv from tb_parameter where par_parent_nv=''Shift'' and par_descc_nv='''+AItem.EditValue+'''');
            Open;
            if not IsEmpty then begin          cxGrid2DBBandedTableView1.Controller.FocusedRow:=cxGrid2DBBandedTableView1.Controller.SelectedRows[i];
              cxGrid2DBBandedTableView1.Columns[id].EditValue:=AItem.EditValue;
              cxGrid2DBBandedTableView1.Columns[id+3].EditValue:=FieldValues['par_udf1_nv'];
              cxGrid2DBBandedTableView1.Columns[id+4].EditValue:=FieldValues['par_udf2_nv'];        end;
          end;
        end;
      end;
      

  7.   


    try
      数据集.DisableControls;
    //你的代码 
    finally 
      数据集.EnableControls;
    end;