hur.cn - 华软网

 热门搜索

数据窗口中删除行的问题

  作者:未知    来源:网络    更新时间:2017/12/5
要求是,只删除选中的那些行。代码如下:
long ll_rowcount, i

ll_rowcount = dw_lr.rowcount()
for i = ll_rowcount to 1 step -1
    if dw_lr.isselected(i) then 
dw_lr.deleterow(i)
    end if
next

调试的时候发现,如果要删除1至5行,则先选择第1行,按住shift键选中第5行,将1至5行同时选中。执行上述语句,却只删除了原来的4、5行,就停止,同时原来的第6行(即当前的第4行)被选中了。如果选择时从第5行选到第1行,则删除1至5行成功。
debug时,发现前两次删除后,原来的第6行(即当前的第4行)被选中了,而1至3行选中被自动取消了,导致删除失败!请大虾们分析一下。
------华软网友回答------
上述代码写在什么地方?相关的事件中都写了什么代码
------华软网友回复------
dw_lr.deleterow(i)
改为
dw_lr.deleterow(1)

------华软网友回复------
如果不是全删
dw_lr.deleterow(i)
改为
dw_lr.deleterow(dw_lr.getrow())

------华软网友回复------
就你写的代码而言应该没有问题,可能如二楼所说的你的其他相关的事件里可能写了代码。
------华软网友回复------
上述代码就写在按钮的clicked事件中。数据窗口又从pfc中继承
------华软网友回复------
发小消息给我,我给你一个删除行的经典例子。能通过按住Shift或者Ctrl键来批量删除数据。我晚上在线。
------华软网友回复------
dw_lr.deleterow(dw_lr.getrow())

这是个思路,具体能不能成我没试过,可以试试。。。。。
------华软网友回复------
if dw_lr.isselected(i) then 
dw_lr.deleterow(i)
         i--//加上一句
    end if

------华软网友回复------
long ll_rowcount, i
long ll_selectrow[]

ll_rowcount = dw_lr.rowcount()
for i = ll_rowcount to 1 step -1
    if dw_lr.isselected(i) then 
ll_selectrow[upperbound(ll_selectrow)+1]=i
    end if
next
dw_lr.selectrow(0,false)
for i=1 to upperbound(ll_selectrow)
   dw_lr.deleterow(ll_selectrow[i])
next
------
试一试看看。
------华软网友回复------
long ll_rowcount, i

ll_rowcount = dw_lr.rowcount()
for i = 1 to ll_rowcount
    if dw_lr.isselected(i) then 
dw_lr.deleterow(i)
         i--
         ll_rowcount--
    end if
next

我都是这么写的

------华软网友回复------
增加一个临时字段来处理:[dr] 选中为"1" ,不选中为"0"
string ls_bz
ls_bz="0"
long ll_found

do
ll_found = dw_1.Find("dr ='1'", 1, dw_1.RowCount())
if ll_found<>0 then
dw_1.deleterow(ll_found)
else
ls_bz="0"
end if
loop until ls_bz="0"      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。