永发信息网

pb dw_1中复选框选中的数据行,插入到另一个数据窗口dw_2中的代码怎么写

答案:4  悬赏:30  手机版
解决时间 2021-03-02 01:01
pb dw_1中复选框选中的数据行,插入到另一个数据窗口dw_2中的代码怎么写
最佳答案
1.如果两个数据窗口结构一样的话可以用rowscopy
这个用法贴到最下面

2.如果仅复制一部分数据的就只有getitemXX,---and---setitemXX

首先for循环判断dw_1 哪些复选框是选中的(假如复选框列名为Flag,选中值为Y 未选中值为N)
int li_row
for i = 1 to dw_1.rowcount()
if dw_1.getitemstring(i,'Flag') ='Y' then
// 这里做插入到dw_2 中
li_row = dw_2.insertrow(0)
dw_2.SetFocus()
dw_2.ScrollToRow(li_row)
dw_2.selectrow(0,false)
dw_2.selectrow(li_row,true)
dw_2.SetColumn(1)
dw_2.setitem(li_row,'col_name',dw_1.getitemstring(i,'col_name'))
//跟多列可以类似写法 只需要更换Col_name即可
end if
next
.
rowscopy 用法:
Controls

DataWindow controls, DataStore objects, and child DataWindows

Syntax

dwcontrol.RowsCopy (startrow, endrow, copybuffer, targetdw, beforerow, targetbuffer )
Argument Description
dwcontrol The name of a DataWindow control, DataStore, or child DataWindow from which you want to copy rows
startrow A long whose value is the number of the first row you want to copy
endrow A long whose value is the number of the last row you want to copy
copybuffer A value of the dwBuffer enumerated data type specifying the buffer from which you want to copy the rows:?Primary!?Delete!?Filter!
targetdw The name of the DataWindow control or DataStore object to which you want to copy the rows. Targetdw can be the same DataWindow (or DataStore) or another DataWindow (or DataStore)
beforerow A long specifying the number of the row before which you want to insert the copied rows. To insert after the last row, use any value that is greater than the number of existing rows
targetbuffer A value of the dwBuffer enumerated data type specifying the target buffer for the copied rows. Values are:?Primary!?Delete!?Filter!

有不明白的可以HI我活着继续提问
全部回答
示例:
//假定dw_1中复选行为 flag char(1)
//待写入dw_2的cat字段中。
.........
.........
string ls_values //定义变量,用于存dw_1取的flag值
long ll_row
ls_values = dw_1.getitemstring(dw_getrow(),'flag') //getitemstring 取值
ll_row = dw_2.insertrow(1) //在dw_2中写入一条行
dw_2.setitem(ll_row,cat,ls_values) //在dw_2新行中写入cat字段值为dw_1中flag字段值
.........
.........
假定checkbox列名为 ls_select
可以根据ls_select列值进行相关操作
如:显示所有选中行(选中时列值等1,非选中时为0)
过滤窗口
dw_1.SetFilter("ls_select = '1'")
dw_1.Filter()
有问题请留言:
你可以写在itemchanged事件当中。
假设复选框的字段叫sel,选中值为Y,不选为N
在事件中写
if dwo.name = 'sel' then //修改复选框的时候触发
if data = 'Y' then //选中
//如果二者数据列相同,可以使用rowscopy
//this.rowscopy(row,row, primary!, dw_2, dw_2.rowcount() + 1, primary!)
//数据不同,那么就要使用dw_2.insertrow()的方式增加行,并且setitem设置值了
long ll_row
ll_row = dw_2.insertrow(0)
dw_2.object.字段[ll_row] = this.object.字段[row]
... //一直写下去
else //取消选中,可以执行删除,假设有个id是二者关联
string ls_id
ls_id = this.object.id[row]
long ll_find
ll_find = dw_2.find("id = '" +ls_id+ "'", 1, dw_2.rowcount()) //查找dw_2中id匹配的一行
if ll_find > 0 then dw_2.deleterow(ll_find) //找到则删除
end if
end if
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
芜湖市亿达投资咨询股份有限公司地址在哪,我
设随机变量X等可能地取1.2.3.n,若P(X<4)=0.
在嘛,我的监控器admin密码输入错了,现在锁
沛县到蒙山有多远
佛山市格来德小家电公司地址有知道的么?有点
鱼的记忆有多久
西畴县青少年学生校外教育活动中心在什么地方
交易所配票是什么意思
各项异性过滤开么
消防设施施工前,需要具备一定的技术、物质条
汉芳SPA美容养生馆在什么地方啊,我要过去处
怎样除体内湿热毒
江西省永新县有什么快递公司可以到达
单选题“第二亚欧大陆桥”在太平洋西岸的桥头
二道坝沟我想知道这个在什么地方
推荐资讯
龙之谷手游为什么一直闪退
为什么道琼斯,恒生指数波动相对比A股小
高原反应吃什么药最管用呢?
一个服一个鸟念什么字
讨好的反义词是讨厌码
王新华是做股票还是做黄金的?
根据我国行政赔偿的计算标准,造成公民死亡的
龙河村林场这个地址在什么地方,我要处理点事
可以给我发一份汽车修理厂的财务月报表吗?谢
女生打篮球应该穿什么衣服和裤子? 鞋子是穿帆
苹果6s更新ios9.2自带浏览器打不开
孱头的读音是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?