none
как ПРОГРАММНО выполнить javascript RRS feed

  • Вопрос

  • каким образом ПРОГРАММНО его выполнить???
    на странице есть следующий скрипт: 

    <td> 
    <select name="ctl00$cphBody$ddlDistrict1" onchange="javascript:setTimeout('__doPostBack(\'ctl00$cphBody$ddlDistrict1\',\'\')', 0)" id="ctl00_cphBody_ddlDistrict1" style="width:250px;"> 
    <option selected="selected" value="?">[Выберите район]</option> 
    <option value="Тракторозаводский">Тракторозаводский</option> 
    <option value="Краснооктябрьский">Краснооктябрьский</option> 
    <option value="Дзержинский">Дзержинский</option> 
    <option value="Центральный">Центральный</option> 
    <option value="Ворошиловский">Ворошиловский</option> 
    <option value="Советский">Советский</option> 
    <option value="Кировский">Кировский</option> 
    <option value="Красноармейский">Красноармейский</option> 
     
    </select> 
    </td>



    как ему передать требуемый параметр и запустить. очень необходимо потому что от него запускается следующий скрипт с вводом данных:

    <td> 
    <select name="ctl00$cphBody$ddlMOU" onchange="javascript:setTimeout('__doPostBack(\'ctl00$cphBody$ddlMOU\',\'\')', 0)" id="ctl00_cphBody_ddlMOU" disabled="disabled" style="width:400px;"> 
     </select> 
    </td> 


    я пробовал так 

    HtmlDocument objWbDoc = webBrowser1.Document;
    HtmlElement hElEnter = objWbDoc.GetElementById("ctl00$cphBody$ddlDistrict1");
    objWbDoc.InvokeScript("ctl00$cphBody$ddlDistrict1");
    hElEnter.SetAttribute("value", "Советский");

    меняет значение но скрипт не обновляет данные в следующем поле для ввода.



    а если так 
    objWbDoc.InvokeScript("ctl00$cphBody$ddlDistrict1",???);

    какой передавать второй параметр если в виде значения

    например 

    "Красноармейский"

    то пишет параметр должен быть типа object[] даже если кодирую в него все равно ошибку выдает , если его не указывать  работает скрипт не выполняется.






    Буду очень признателен за содействие.

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:15 MSDN Forums consolidation (От:Visual C#)
    14 сентября 2010 г. 14:20

Ответы

  • все я нашел способ решения этой проблемы спасибо всем за участие.

     

     

    HtmlDocument objWbDoc = webBrowser1.Document;

    HtmlElement hElEnter = objWbDoc.GetElementById("ctl00$cphBody$ddlDistrict1");

     hElEnter.SetAttribute("value", "Советский");

     

     // вызывает обработчики данного события. (поскольку в моем случае так выходит)

    webBrowser1.Document.GetElementById("ctl00$cphBody$ddlDistrict1").RaiseEvent("onchange");

     

     

    пока я не смог обойтись без webBrowser, но буду искать в этом направлении.

    • Помечено в качестве ответа NIKkakNIK 16 сентября 2010 г. 15:03
    16 сентября 2010 г. 15:03

Все ответы

  • Можно попробовать в компоненте webbrowser выполнить, может дальше по цепочке пойдёт само..

    Глядя для чего это вообще,
    если просто для постбэка, то наверное можно выполнить постбэк через

     

     

    HttpWebRequest и
    HttpWebResponse

    Заполнить там данные формы как надо, и послать,
    а таймер если нужно, обычный поставить, и притвортиьься , что он там оттикал сколько надо.

    Может не по делу вообще написал, но вдруг на мысль натолкнёт какую-нибудь =)

     

    15 сентября 2010 г. 5:04
  • function __doPostBack(eventTarget, eventArgument) {
     if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
     theForm.__EVENTTARGET.value = eventTarget;
     theForm.__EVENTARGUMENT.value = eventArgument;
     theForm.submit();
     }
    }
    
    
    
    <select name="ctl00$cphBody$ddlDistrict1" onchange="javascript:setTimeout('__doPostBack(\'ctl00$cphBody$ddlDistrict1\',\'\')', 0)" id="ctl00_cphBody_ddlDistrict1" style="width:250px;"> 
    <option selected="selected" value="?">[Выберите район]</option> 
    <option value="Тракторозаводский">Тракторозаводский</option> 
    <option value="Краснооктябрьский">Краснооктябрьский</option> 
    <option value="Дзержинский">Дзержинский</option> 
    <option value="Центральный">Центральный</option> 
    <option value="Ворошиловский">Ворошиловский</option> 
    <option value="Советский">Советский</option> 
    <option value="Кировский">Кировский</option> 
    <option value="Красноармейский">Красноармейский</option> 
    </select> 
    

     

     

    как выполнить ctl00$cphBody$ddlDistrict1

    или лучше выполнить function __doPostBack()??? и как?


    15 сентября 2010 г. 14:38
  • все я нашел способ решения этой проблемы спасибо всем за участие.

     

     

    HtmlDocument objWbDoc = webBrowser1.Document;

    HtmlElement hElEnter = objWbDoc.GetElementById("ctl00$cphBody$ddlDistrict1");

     hElEnter.SetAttribute("value", "Советский");

     

     // вызывает обработчики данного события. (поскольку в моем случае так выходит)

    webBrowser1.Document.GetElementById("ctl00$cphBody$ddlDistrict1").RaiseEvent("onchange");

     

     

    пока я не смог обойтись без webBrowser, но буду искать в этом направлении.

    • Помечено в качестве ответа NIKkakNIK 16 сентября 2010 г. 15:03
    16 сентября 2010 г. 15:03