我现在用了一个循环所有选中行(i是循坏的数),再改变某一列的值(那一列是Combobox属性),如下代码。。cxGrid2DBBandedTableView1.DataController.Controller.SelectedRecords[i].Values[4]:='test111';表面上值是改变的,但只要我把鼠标点在那一列上,显示是还是旧的那个值。。
实际数据还是没有改变。。数据源我是设了ltBatchOptimistic模式的..
实际数据还是没有改变。。数据源我是设了ltBatchOptimistic模式的..
--------------------------------------------
欢迎各位有空踩一下我的博客!
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;
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;
try
数据集.DisableControls;
//你的代码
finally
数据集.EnableControls;
end;