以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]控件绑定指定行列内容  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=161108)

--  作者:工匠
--  发布时间:2021/3/6 10:13:00
--  [讨论]控件绑定指定行列内容
老师好:
请帮看看,窗口文本框控件如何绑定指定表的行列内容,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:文本框绑定指定表行列.table

谢谢!


--  作者:有点蓝
--  发布时间:2021/3/6 10:21:00
--  
这种没有办法绑定,只能使用代码赋值,比如

e.Form.Controls("TextBox1").text = Tables("表A").Rows(1)("第一列")
e.Form.Controls("TextBox2").text = Tables("表A").Rows(2)("第一列")

--  作者:工匠
--  发布时间:2021/3/6 11:50:00
--  
谢谢老师,需要实时赋值显示的,不是定时赋值获取。把代码放在表事件,目前只会列变化触发。请帮改一下,当不同的行列变化后(如变化的是表A第2行的第一列)触发对指定的控件赋值(后续会固定上百行的)。或是帮看看有没有其他更好的触发赋值方式
Select Case e.DataCol.name
    
    Case "第一列"

        Forms("窗口").Controls("TextBox1").text = Tables("表A").rows(1)("第一列")
        
End Select


谢谢!


--  作者:有点蓝
--  发布时间:2021/3/6 12:01:00
--  
控件名称最好是有规律,比如TextBox1对应第一行,TextBox2对应第二行

Select Case e.DataCol.name
    
    Case "第一列"
dim idx as integer = Tables("表A").findrow(e.datarow)
        Forms("窗口").Controls("TextBox" & idx).text = e.datarow("第一列")
        
End Select

--  作者:工匠
--  发布时间:2021/3/7 11:44:00
--  
谢谢老师,这样可以实现了,多列内容也可自动赋值。有个新问题,就是打开重新打开窗口后,里面文本框内容不见了,请教下重新打开窗口后所有文本框如何重新一次性获取表的所有对应的数据(不是一个一个写对应代码那种获取)

谢谢!


--  作者:有点蓝
--  发布时间:2021/3/7 20:46:00
--  
在窗口afterload事件调用类似2楼的代码给所有控件赋值
--  作者:工匠
--  发布时间:2021/3/7 21:26:00
--  
谢谢老师,按每个文本控件写是可以,

Forms("窗口").Controls("TextBox1").text = Tables("表A").Rows(0)("第一列")  \'\'\'这样要每个文本框写一段
Forms("窗口").Controls("TextBox2").text = Tables("表A").Rows(1)("第一列")   \'\'\'这样要每个文本框写一段


请老师帮看看,能不能实现像在表事件代码那样简单呢,不要每个文本框控件都写一行

谢谢!



--  作者:有点蓝
--  发布时间:2021/3/7 21:29:00
--  
for  i as integer = 1 to Tables("表A").Rows.count - 1
Forms("窗口").Controls("TextBox" & i).text = Tables("表A").Rows(i)("第一列")
next

--  作者:工匠
--  发布时间:2021/3/7 21:37:00
--  
谢谢老师,可以了。后续要是能直接和设备的PLC modbus协议数据,仪器仪表接口对接数据,就很好了..............