读书人

关于修改 dbgrideh 设为自动排序的某列

发布时间: 2013-07-11 15:38:46 作者: rapoo

关于修改 dbgrideh 设为自动排序的某列值时遇到的问题
dbgrideh1表格设为自动排序,
DBGridEh1.SortLocal:=True;

DBGridEh1.OptionsEh:=DBGridEh1.OptionsEh + [dghAutoSortMarking];

for i:=0 to DBGridEh1.Columns.Count-1 do
DBGridEh1.Columns[i].Title.TitleButton:=True;

现在的问题是:对列book_no排序后,然后循环修改该列,如下代码:

qry.first;
while not qry.eof do
begin
if qry.fieldbyname('status').asstring = '未确认' then
begin
edit;
qry.fieldbyname('book_no').asstring := '6'; //--当修改此处时,因为设为自动排序,所以qry记录集重新排序,原来的循环被打乱.
//我的意思是怎样保证修改该列值时,不排序,等所有的记录循环完成后在排序,各位大侠,有什么办法吗?
end;
qry.next;
end;
[解决办法]
dbgrideh的排序与数据源的排序是两回事。
qry.DisableControls;//断开dbgrideh的控制
qry.first;
while not qry.eof do
begin
if qry.fieldbyname('status').asstring = '未确认' then
begin
edit;
qry.fieldbyname('book_no').asstring := '6'; //--当修改此处时,因为设为自动排序,所以qry记录集重新排序,原来的循环被打乱.
//我的意思是怎样保证修改该列值时,不排序,等所有的记录循环完成后在排序,各位大侠,有什么办法吗?
end;
qry.next;
end;

qry.EnableControls;//连接dbgrideh的控制

读书人网 >.NET

热点推荐