ورود

View Full Version : انتخاب Value در كمبو باكس وب براوزر و انجام عمليات Change آن



rezankh
جمعه 10 آبان 1392, 10:06 صبح
با سلام در وب سايتي كه در وب براوز استفاده مي‌كنم كمبو باكسي با سورس كد زير وجود داره.


<td>زیر بخش :</td><td>

<select name="sectionId" onchange='document.forms[0].action="item.do?method=selectSubSection";document.forms[0].submit();'>


<option value="10000000" style="color: #CCCCCC">a</option>

<option value="20000000">b</option>

<option value="30000000" selected>c</option>

<option value="40000000" style="color: #CCCCCC">d</option>

<option value="50000000" style="color: #CCCCCC">e</option>

<option value="60000000">f</option>

</select>

حالا كد زير رو توي رويداد DocumentComplete نوشتم :


WebBrowser1.Document.Forms(0).elements("sectionId").Value = "10000000"

خوب اينجا زماني كه به صفحه مورد نظر مي‌رسم مقدار a در كمبو ميشينه ولي عمليات OnChangeصورت نميگيره و به صفحه بعد كه Navigate نميشه. آدرس صفحه بعد هم اينه :


"http://sabka.ir:3030/AgriInsurance/item.do?method=selectSubSection"

لذا كدهاي زير رو هم يكي يكي در ادامه گذاشتم و تست كردم كه جواب نميده :


Navigate "http://sabka.ir:3030/AgriInsurance/item.do?method=selectSubSection"
WebBrowser1.Document.Forms(0).Submit
WebBrowser1.Document.Forms(0).elements("sectionId").Click
WebBrowser1.Document.Forms(0).elements("sectionId").OnChange

چطوري ميتونم درستش كنم؟
با تشكر.

SlowCode
جمعه 10 آبان 1392, 22:47 عصر
به آیتمی که میخوای انتخاب بشه باید یه attr به نام selected رو اضافه کنی.
اگه دقت کنی تو خط 10 از این مورد استفاده شده.
ببین setAttribute جواب میده؟
http://www.w3schools.com/jsref/met_element_setattribute.asp

rezankh
شنبه 11 آبان 1392, 09:00 صبح
با سلام و تشكر از شما
كد زير رو نوشتم البته نمي‌دونم درست نوشتم يا نه. جواب نداد در ضمن طبق گفته سايت w3schools ، تابع setAttribute در اينترنت اكسپلورر 9 به بالا جواب ميده.


WebBrowser1.Document.Forms(0).elements("sectionId").Value = "10000000"
WebBrowser1.Document.getElementsByTagName("sectionId").setAttribute

SlowCode
شنبه 11 آبان 1392, 11:56 صبح
بله اشتباهه. شما اومدی به المنت select یه value دادی. همونطور که تو پست قبلی اشاره کردم باید به option مورد نظرت selected رو اضافه کنی.
با این کد میتونی این کار رو بکنی:
WebBrowser1.Document.getElementsByTagName("option")(elementIndex).getAttributeNode("selected").Value = "true"
تو ورژن های پایین IE هم مشکلی نداره.

به جای elementIndex ایندکس آپشن مورد نظرت رو بنویس.

نکته: اگه توی صفحه ات به جز این آپشن ها، آپشن های دیگه ای هم داری این کد درست عمل نمیکنه. بهتره به این تگ select یه آی دی بدی بعد فقط تو فرزندان اون attr رو تنظیم کنی.
مثلا بهش آی دی sectionId بده بعد:

Dim parent As Object

Set parent = WebBrowser1.Document.getElementByid("sectionId")
parent.getElementsByTagName("option")(1).getAttributeNode("selected").Value = "true"

rezankh
یک شنبه 12 آبان 1392, 19:03 عصر
سلام خدمت دوستان و تشكر ويژه خدمت جناب آقا محسن
خوشبختانه بالاخره به جوابم رسيدم و اون نوشتن كد زير در رويداد DocumentComplete بود.


WebBrowser1.Document.getelementbyid("sectionId").Options.selectedindex = 1
WebBrowser1.Document.getelementbyid("sectionId").OnChange

البته مقدار ايندكس رو اچارا كاربر خودش بايد بده ( طبق جدول راهنمايي كه براش مي‌ذارم.)
جناب آقا محسن از اينكه وقتتون رو گرفتم نهايت پوزش و تشكر رو دارم. دستتون درد نكنه.