以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  网页赋值后为什么没出现结果且即刻恢复默认值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161061)

--  作者:cxmxjwlmq
--  发布时间:2021/3/4 15:59:00
--  网页赋值后为什么没出现结果且即刻恢复默认值

各位老师:我在系统中引用一个窗口中的网面,我想在一个网面的输入框中赋值,代码如下:

.....

web1.Document.GetElementById("ctl00_C_frmStart").SetAttribute("Value", "2021-03-01")       \'查询-开始时间
web1.Document.GetElementById("ctl00_C_frmEnd").SetAttribute("Value", "2021-03-31")         \'查询-结束时间
web1.Document.GetElementById("ctl00_C_frmSCXMC").SetAttribute("Value", "新疆1线")          \'生产线
web1.Document.GetElementById("ctl00_C_ischeck").SetAttribute("Value", "9")\'"全部")         \'状态
web1.Document.GetElementById("ctl00_C_frmDPH").SetAttribute("Value", "MJ000062")           \'底盘号
web1.Document.GetElementById("ctl00_C_btnSearch").InvokeMember("click")                    \'点击查询按钮

.....

 

现在是:这些数值都赋值给相应的输入框中后,即刻在相应的输入框中出现网页的默认数值!如下图;

 


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20210304155303.png
图片点击可在新窗口打开查看

 

我想达成的效果是:完成赋值并出现查询数据。如下图:

 

 


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20210304155254.png
图片点击可在新窗口打开查看

 

麻烦各位老师费心!

[此贴子已经被作者于2021/3/4 15:59:58编辑过]

--  作者:有点蓝
--  发布时间:2021/3/4 16:51:00
--  
贴出完整代码,代码放在那里的?
--  作者:cxmxjwlmq
--  发布时间:2021/3/4 17:22:00
--  

全部代码:

\'Dim web As System.Windows.Forms.WebBrowser = Forms("公司SCF系统").Controls("WebBrowser1").Basecontrol
Dim web1 As System.Windows.Forms.WebBrowser = Forms("公司SCF系统").Controls("WebBrowser2").Basecontrol
\'             web.Navigate("http://。。。。")
\'             web.Navigate("http://。。。")
          Do Until web1.ReadyState = 4
             Application.DoEvents
          Loop
\'           web.Document.GetElementById("UserName").SetAttribute("Value", "...")
\'           web.Document.GetElementById("Password").SetAttribute("Value", ".....")
\'           web.Document.GetElementById("btnSubmit").InvokeMember("click")

Forms("公司SCF系统").Show()
           web1.Navigate("http://。。。。。")
           Forms("公司SCF系统").controls("Textbox1").Text = "下线条码打印"

                \'web1.Document.Window.Frames("公司SCF系统").Document.GetElementById("ctl00_C_frmSCXMC").SetAttribute("Value", "新疆1线") \'获得第二个FrAMES框架里面的ID为"username"的的HTML标签元素,并且将其Value设置为"test138"
                \'web1.Document.Window.Frames("公司SCF系统").Document.GetElementById("ctl00_C_frmDPH").SetAttribute("Value", "MJ000062")  \'获得第二个FrAMES框架里面的ID为"pwd1"的的HTML标签元素,并且将其Value设置为"a110110"
                \'如果元素不是在Frame框架中,那么直接 web.Document.GetElementById 即可
web1.Document.GetElementById("ctl00_C_frmStart").SetAttribute("Value", "2021-03-01")       \'查询-开始时间
web1.Document.GetElementById("ctl00_C_frmEnd").SetAttribute("Value", "2021-03-31")         \'查询-结束时间
web1.Document.GetElementById("ctl00_C_frmSCXMC").SetAttribute("Value", "新疆1线")          \'生产线
web1.Document.GetElementById("ctl00_C_ischeck").SetAttribute("Value", "9")\'"全部")         \'状态
web1.Document.GetElementById("ctl00_C_frmDPH").SetAttribute("Value", "MJ000062")           \'底盘号
web1.Document.GetElementById("ctl00_C_btnSearch").InvokeMember("click")                    \'点击查询按钮

 

代码在一个窗口的按钮的Click事件,调用Forms("公司SCF系统")窗口出现查询数据!

 

请老师费心!

[此贴子已经被作者于2021/3/4 17:58:29编辑过]

--  作者:有点蓝
--  发布时间:2021/3/4 17:24:00
--  
Dim web1 As System.Windows.Forms.WebBrowser = Forms("公司SCF系统").Controls("WebBrowser2").Basecontrol
web1.Navigate("http://172.20.210.100:1000/MotorLM/SCGL/SCJH_RLJDJHXP.aspx")
Do Until web1.ReadyState = 4
             Application.DoEvents
          Loop
web1.Document.GetElementById("ctl00_C_frmStart").SetAttribute("Value", "2021-03-01")  
……

--  作者:cxmxjwlmq
--  发布时间:2021/3/4 17:42:00
--  

谢谢蓝老师!

感谢!


--  作者:cxmxjwlmq
--  发布时间:2021/3/5 12:09:00
--  

不好意思,蓝老师,还得麻烦您以下问题:

 

1、网页中有一个 checkbox单选框,我想要直接赋值为选中,但用以下代码:

 

web1.Document.GetElementById("ctl00_C_gv_ctl02_cb").InvokeMember(ctl00_C_gv_ctl02_cb.Checked = True)

提示:未将对象引用设置到对象的实例。

网页分析如下:

 

<TD align=center><INPUT id=ctl00_C_gv_ctl02_cb CHECKED type=checkbox name=ctl00$C$gv$ctl02$cb> </TD>

 

2、网页中有一个 checkbox单选框,我想要直接赋值为选中,但用以下代码:

web1.Document.GetElementById("ctl00_C_gv_ctl02_GridView2").InvokeMember(ctl00_C_gv_ctl02_GridView2.Checked = True)

  提示未将对象引用设置到对象的实例。

网页分析如下:

<TABLE id=ctl00_C_gv_ctl02_GridView2 class=m_table style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0>

 

 

 这是未赋值开后的效果:

 


此主题相关图片如下:微信图片_20210305114947.png
按此在新窗口浏览图片

 

我想要的效果是两个都选上:效果如下图

 


此主题相关图片如下:微信图片_20210304155254.png
按此在新窗口浏览图片

 

谢谢!麻烦老师费心!

[此贴子已经被作者于2021/3/5 12:11:37编辑过]

--  作者:有点蓝
--  发布时间:2021/3/5 12:15:00
--  
web1.Document.GetElementById("ctl00_C_gv_ctl02_cb").SetAttribute("checked", "checked") 
--  作者:cxmxjwlmq
--  发布时间:2021/3/5 13:56:00
--  

老师,不好意思,还是出现如下提示,两个框没有选中

如下图:

 


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20210305134732.png
图片点击可在新窗口打开查看

 

 

可能是网页解析的问题吗?网页解析如下(两个单选框的网页):

 

……..

<DIV>

<TABLE id=ctl00_C_gv class=m_table style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0>

<TBODY>

<TR>

<TH style="WIDTH: 20px" scope=col><SPAN title=全选/取消><INPUT onclick=ctl00$C$gv$ctl02$cb.checked=ctl00$C$gv$ctl01$ctl16.checked; id=ctl00_C_gv_ctl01_ctl16 type=checkbox name=ctl00$C$gv$ctl01$ctl16></SPAN></TH>

 

<TH scope=col>序号</TH>

<TH scope=col>采集零件</TH>

……..

 

<TD align=center><INPUT id=ctl00_C_gv_ctl02_cb CHECKED type=checkbox name=ctl00$C$gv$ctl02$cb> </TD>

<TABLE id=ctl00_C_gv_ctl02_GridView2 class=m_table style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0>

<TBODY>

 

<TD style="WIDTH: 50px">1 </TD>

 

<TD style="WIDTH: 50px"><A href="javascript:expandcollapse(\'divMJ000062\', \'one\');"><IMG id=imgdivMJ000062 border=0 alt="Expand to show Orders" src="/Images/plus.gif" width=9> </A>

 

<TD style="WIDTH: 80px" vAlign=middle align=center>新疆1线</TD>

……


老师辛苦!


--  作者:有点蓝
--  发布时间:2021/3/5 14:23:00
--  
可能是页面有js动态控制影响了,看上面返回的页面数据已经是勾选状态的了

<TD align=center><INPUT id=ctl00_C_gv_ctl02_cb CHECKED type=checkbox name=ctl00$C$gv$ctl02$cb> </TD>

至于这种页面分析控制的用法我这里无法提供支持,只能自己去分析了

--  作者:cxmxjwlmq
--  发布时间:2021/3/8 19:38:00
--  

蓝老师:

我用以下代码,未找到网页表中的ID号ctl00_C_gv_ctl02_cb

 

Dim inputs = web1.Document.GetElementsByTagName("Input")

For Each Input As object In Inputs
     msgbox(input.id)

Next

 

 

是不是网页表中的单选框ID,要在TABLE id=ctl00_C_gv里用别的代码才能找到!

麻烦你给看看,谢谢!

网页分析

<DIV>

<TABLE id=ctl00_C_gv class=m_table style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0>

<TBODY>

<TR>

<TH style="WIDTH: 20px" scope=col><SPAN title=全选/取消><INPUT onclick=ctl00$C$gv$ctl02$cb.checked=ctl00$C$gv$ctl01$ctl16.checked; id=ctl00_C_gv_ctl01_ctl16 type=checkbox name=ctl00$C$gv$ctl01$ctl16></SPAN></TH>

 

<TH scope=col>序号</TH>

<TH scope=col>采集零件</TH>

……..

 

<TD align=center><INPUT id=ctl00_C_gv_ctl02_cb  type=checkbox name=ctl00$C$gv$ctl02$cb> </TD>

<TABLE id=ctl00_C_gv_ctl02_GridView2 class=m_table style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0>

<TBODY>

 

谢谢费心!
[此贴子已经被作者于2021/3/8 19:38:49编辑过]