我想在dxdbgrid中拖坠一条记录到来改变该记录相对于其他记录的顺序,有一个字段是专门记录顺序号的 (sequence),
我在 onDragDrop 事件中语句如下
//------------------------------------
with dxDBGrid1 do
begin
DragNode.MoveTo(FocusedNode, natlInsert); dxDBGrid1.Refresh;
SortField;//根据当前dxdbgrid的相对位置,改变数据集中记录的sequence拖动的字段的值
end;
//------------------------------------
SortField函数如下
with dxDBGrid1 do
begin
for I := 0 to Count - 1 do
begin
if UseBooks then
Items[I].Focused := True; with PrimarySortDm.adsPrimarySort do
begin
GotoBook(FocusedNode.Data); if not (State in [dsInsert, dsEdit]) then
Edit;
FieldByName('sequence').AsInteger := I + 1;
end;
end;
end;
dxDBGrid1.Refresh;但是我拖动记录的时候sequence字段值老是有重复的,并没有象我想的那样按顺序排列。如果我单独运行SortField函数的话,sequence字段的值就是正确的,没有任何问题,我怀疑问题出在node上,但是不太清楚。
我在 onDragDrop 事件中语句如下
//------------------------------------
with dxDBGrid1 do
begin
DragNode.MoveTo(FocusedNode, natlInsert); dxDBGrid1.Refresh;
SortField;//根据当前dxdbgrid的相对位置,改变数据集中记录的sequence拖动的字段的值
end;
//------------------------------------
SortField函数如下
with dxDBGrid1 do
begin
for I := 0 to Count - 1 do
begin
if UseBooks then
Items[I].Focused := True; with PrimarySortDm.adsPrimarySort do
begin
GotoBook(FocusedNode.Data); if not (State in [dsInsert, dsEdit]) then
Edit;
FieldByName('sequence').AsInteger := I + 1;
end;
end;
end;
dxDBGrid1.Refresh;但是我拖动记录的时候sequence字段值老是有重复的,并没有象我想的那样按顺序排列。如果我单独运行SortField函数的话,sequence字段的值就是正确的,没有任何问题,我怀疑问题出在node上,但是不太清楚。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货