Jump to content

IE Dropdown Giving me fits


Recommended Posts

I was working with an intranet site today and there is a huge combo box that you can click on where it says "All", underneath 'Model' (Capture.png). After selecting a model, there are numerous lines to choose from that do other things, which I can work with perfectly well. I have to deal with other pages similar to this one, but on this particular page the only "firing" event is the choice of the dropdown menu. 

Here is the source for that particular field:  (The id we care about is "cphBody_rgdModelDrawing_ctl00_ctl02_ctl02_rcbModel")

<table cellspacing="0" class="rgMasterTable" id="cphBody_rgdModelDrawing_ctl00" style="width:100%;table-layout:auto;empty-cells:show;">
    <colgroup>
        <col  />
        <col  />
        <col  />
        <col  />
        <col style="width:45px" />
        <col style="width:30px" />
    </colgroup>
<thead>
        <tr>
            <th scope="col" class="rgHeader"><a title="Click here to sort" href="javascript:__doPostBack(&#39;ctl00$cphBody$rgdModelDrawing$ctl00$ctl02$ctl01$ctl01&#39;,&#39;&#39;)">Model</a></th><th scope="col" class="rgHeader"><a title="Click here to sort" href="javascript:__doPostBack(&#39;ctl00$cphBody$rgdModelDrawing$ctl00$ctl02$ctl01$ctl02&#39;,&#39;&#39;)">Drawing</a></th><th scope="col" class="rgHeader"><a title="Click here to sort" href="javascript:__doPostBack(&#39;ctl00$cphBody$rgdModelDrawing$ctl00$ctl02$ctl01$ctl03&#39;,&#39;&#39;)">Station Number</a></th><th scope="col" class="rgHeader"><a title="Click here to sort" href="javascript:__doPostBack(&#39;ctl00$cphBody$rgdModelDrawing$ctl00$ctl02$ctl01$ctl04&#39;,&#39;&#39;)">Sort Order</a></th><th scope="col" class="rgHeader">&nbsp;</th><th scope="col" class="rgHeader">&nbsp;</th>
        </tr><tr class="rgFilterRow">
            <td style="white-space:nowrap;">
                        <div id="cphBody_rgdModelDrawing_ctl00_ctl02_ctl02_rcbModel" class="RadComboBox RadComboBox_Default" style="width:200px;">
                <table summary="combobox" style="border-width:0;border-collapse:collapse;table-layout:fixed;width:100%">
                    <tr class="rcbReadOnly">
                        <td style="margin-top:-1px;margin-bottom:-1px;width:100%;" class="rcbInputCell rcbInputCellLeft"><input name="ctl00$cphBody$rgdModelDrawing$ctl00$ctl02$ctl02$rcbModel" type="text" class="rcbInput" id="cphBody_rgdModelDrawing_ctl00_ctl02_ctl02_rcbModel_Input" value="All" style="display: block;" readonly="readonly" /></td>
                        <td style="margin-top:-1px;margin-bottom:-1px;" class="rcbArrowCell rcbArrowCellRight"><a id="cphBody_rgdModelDrawing_ctl00_ctl02_ctl02_rcbModel_Arrow" style="overflow: hidden;display: block;position: relative;outline: none;">select</a></td>
                    </tr>
                </table>
                <div class="rcbSlide" style="z-index:6000;"><div id="cphBody_rgdModelDrawing_ctl00_ctl02_ctl02_rcbModel_DropDown" class="RadComboBoxDropDown RadComboBoxDropDown_Default " style="float:left;display:none;"><div class="rcbScroll rcbWidth" style="height:200px;width:100%;"><ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;"><li class="rcbItem ">All</li><li class="rcbItem ">019-208-17-3Y</li><li class="rcbItem ">019-208-17-6Y</li><li class="rcbItem ">124-ATR-3/0-L10</li><li class="rcbItem ">124-ATR-3/0-L10M</li><li class="rcbItem ">124-ATR-3/0-L10S</li><li class="rcbItem ">124-ATR-3/0-L13</li><li class="rcbItem ">124-ATR-3/0-L15</li><li class="rcbItem ">124-ATR-3/0-L15M</li><li class="rcbItem ">124-ATR-3/0-L15S</li><li class="rcbItem ">124-ATR-3/0-L18</li><li class="rcbItem ">124-ATR-3/0-L20</li><li class="rcbItem ">124-ATR-3/0-L25</li><li class="rcbItem ">124-ATR-3/0-L30</li><li class="rcbItem ">124-ATR-4/0-L10</li><li class="rcbItem ">124-ATR-4/0-L13</li>
                  
                  .....there are thousands of these parts, listed like this. then at the end of the li tag list....
                  
                  
                       <script type="text/javascript">
                                function ModelIndexChanged(sender, args) {
                                    var tableView = $find("cphBody_rgdModelDrawing_ctl00");
                                    tableView.filter("ModelDrawing_ModelID", args.get_item().get_value(), "EqualTo");
                                }
                            </script>

 

I am able to read and write to the dropdown using either _IEGetFormCollection (by index because the page always has the same input indices) or _IEGetObjectById, and then using _IEFormElementSetValue. What I cannot seem to do is to use the "child" method whereby one would address the list object by using _IEFormGetCollection. That returns an error code of either 7 or 2 (it's been a long day. I forget which)

The problem with writing to the dropdown with setValue is that the form doesn't fire after you change the list box. In fact, it won't even fire if a user clicks on it, then hits return. It is only by changing the value manually and then changing it again that you can get the part number that you want to display as it should. 

How should one go about selecting the dropdown value that would allow the page to fire as it should? 

 

Capture.PNG

;this works but doesn't fire - I use formCollection because there are other things that I have to use fields for in this document and the indices don't change
    Local $oForm = _IEFormGetCollection($oIE, 0)
    $modelTextBox = _IEFormElementGetCollection($oForm, 7)
    _IEFormElementSetValue($modelTextBox, $chargerPartNumber)

 

Edited by oddlogic
Link to comment
Share on other sites

I dont see it in your html code example , but i guess there is an event which fires

function ModelIndexChanged

So after changing the value you will need to fire the event or manually execute the java function.

Link to comment
Share on other sites

For anyone interested, this was ultimately what I did to automate with consistency:

 

$oIE = _IECreate($modelDrawingURL)
$modelArrow = _IEGetObjById($oIE, "cphBody_rgdModelDrawing_ctl00_ctl02_ctl02_rcbModel_Arrow") ;this activates the dropdown menu - hidden 
_IEAction($modelArrow, "click")
$oForm = _IEFormGetCollection($oIE, 0)
$modelListBox = _IEFormElementGetCollection($oForm, 7)
_IEFormElementSetValue($modelListBox, $chargerPartNumber) ;this sets the part number that I want in the text box, but doesn't "fire"
ControlClick("Cleveland Drawings Admin", "", "Internet Explorer_Server1") ;I noticed that when I clicked on the window after the text value
                                                                          ;was set that IE fired. I tried clicking on the arrow again like 
                                                                          ;I did above and it didclose, but did not fire. This method closes 
                                                                          ;and fires.

 

Edited by oddlogic
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...