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

求教cxgrid怎么按某一单元格写到另一格

2012-03-30 
求教cxgrid如何按某一单元格写到另一格?各位大大,哥们分不多了不然多给点。请教一个问题,我用的dev express

求教cxgrid如何按某一单元格写到另一格?
各位大大,哥们分不多了不然多给点。
请教一个问题,我用的dev express的cxgrid+Adodataset,要实现这样一个功能:
我现从当前正在编辑的行中的某一单元A(是一个单选组),取到了一个值,我根据这个值去填同一行B单元格的值,但不是马上提交,其他格算好后再通过批量提交进行保存。
我之前试过用values(row,col)属性在change事件中进行填值,是可以填上去,但光标一移开值就不见了。
用edit.+update过程也不行,因为这样单元的单选就没用了。
请问到底乍么进行填值才是有效的呢?



[解决办法]
ado设成批量提交模式,然后adoquery1.fields[i].value 进行赋值。
[解决办法]
参考一下这个:

DELPHI enablecontrols,disablecontrols函数
DisableControls方法是在程序修改或后台有刷新记录的时候切断数据组件,如TTABLE、ADOQUERY等等与组件数据源的联系。如果没有切断,数据源中只要一有数据的改动,尤其是批量改动的话,每一笔的改动都会更新窗口中数据浏览组件的显示,这样会急剧减慢处理过程而且浪费时间。EnableControls的作用相反,用来恢复TTABLE等组件与DATASOURCE的联系,并促使数据浏览组件更新显示。
这两个函数主要阻止组件感应显示,以加快语句执行速度。 比如,用大量的循环的时候,最好用他们。
1. 数据集的EnableControls, DisableControls方法成对使用的时候, 如果中间的代码可能会导至出错的话必须用try..finaly DisableControls; end; 否则会导致数据感知不控制不可使用;
2. 在遍历数据或Filter大数据的时候的要用DataSet的EnableControls与DisabbleControls, 否则窗体上的数据感知控件会闪烁.
enablecontrols,disablecontrols是防止因数据源的改动而造成界面的闪动!在你需要刷新数据时可以调这两个函数,但建议你把它写在
try...finally语句块中!
如:
try
adoQuery1.disablecontrols;
adoQuery1.close;
adoQuery1.open;
finally
adoQuery1.enablecontrols;
end; 
TQuery 的EnableControls 和DisableControls 方法都是继承自TDataSet 类的。由于TTable 和TQuery 都是TDataSet 的派生类,所以它们都有以上这两个方法。 


procedure TForm1.ddd1Click(Sender: TObject);
var
i: integer;
begin
oraQuery1.DisableControls;
try
oraSession1.StartTransaction;
for i:=0 to dddd.Controller.SelectedRowCount-1 do
begin
oraQuery1.Locate('keyid',
dddd.DataController.GetDisplayText(dddd.Controller.SelectedRows[i].RecordIndex,dddd.DataController.GetItemByFieldName('KEYID').Index),[loCaseInsensitive]);
oraQuery1.Edit;
oraQuery1.FieldByName('tier2c').Value := '测试工';
end;
oraQuery1.ApplyUpdates;
oraSession1.Commit;
finally
oraQuery1.EnableControls;
end;
end;

[解决办法]
阿三說的不錯,使用EnableControls 和DisableControls 方法再加ado的緩存模式即可解決你的問題...

热点排行