pb数据窗口数据输入的下拉选择效果
1.建立子数据窗口.
2.在dw_1.editchanged中写如类似下面代码
if row <=0 then return
DataWindowChild state_child
accepttext( )
string ls_value,partname,cartype
long findIndex
if dwo.name = "partno" then
GetChild("partno", state_child)
state_child.accepttext( )
ls_value = trim(getitemstring(row,"partno"))
state_child.SetTransObject(SQLCA)
state_child.Retrieve()
state_child.setfilter( "p_partno like '%"+ls_value+"%' ")
state_child.filter( )
end if
3.在dw_1.itemchanged中写如下代码
dw_1.event itemfocuschanged( row, dwo)
因为acceptText()会触犯,itemchanged事件,所以不能在itemchanged事件中写acceptText()
4.在itemfocuschanged中写如下代码
if row <=0 then return
if dwo.name="partno" then
accepttext( )
string partno,partname,cartype
partno = trim(dw_1.getitemstring(row,"partno"));
select p_partname,p_yw into:partname,:cartype from p_partno
where p_partno=:partno;
commit;
dw_1.setitem( row, "partname", partname);
dw_1.setitem( row, "cartype", cartype);
accepttext( )
end if
5.回车键代替Tab件,需要给dw_1建立个用户自定义事件
6.将使用setitem设置的列tab设置成0
*********************改进措施*****************************
申明窗体变量partno_ds
在open事件中填充partno_ds
string cmdText
cmdText="SELECT p_partno Partno,p_partName PartName,p_yw CarType " + &
" from p_partno where (p_partno <> '' AND p_partno is not null and p_partno >'-') " + &
" order by p_partno";
partno_ds= gf_fill_ds(cmdText);
调整editchanged事件代码为使用sharedata方式
if row <=0 then return
DataWindowChild state_child
accepttext( )
string ls_value;
long findIndex
if dwo.name = "partno" then
GetChild("partno", state_child)
state_child.accepttext( )
ls_value = trim(getitemstring(row,"partno"))
partno_ds.sharedata( state_child)
if not isnull(ls_value) and trim( ls_value) <> '' then
state_child.setfilter( "partno like '%"+ls_value+"%' ")
else
state_child.setfilter("")
end if
state_child.filter( );
end if
调整itemfocuschange事件为datastore查找
if row <=0 then return
if dwo.name="partno" then
accepttext( )
long findIndex
string partno,partname,cartype
partno = trim(dw_1.getitemstring(row,"partno"));
findIndex=partno_ds.find( "partno='"+ partno+"'",1, partno_ds.rowcount( ) );
if(findIndex>=1 ) then
partname=partno_ds.getitemstring( findIndex,"partname")
cartype=partno_ds.getitemstring( findIndex, "cartype")
dw_1.setitem( row, "partname", partname);
dw_1.setitem( row, "cartype", cartype);
accepttext( )
end if
end if
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述