Лучший отвечающий
как ПРОГРАММНО выполнить javascript

Вопрос
-
каким образом ПРОГРАММНО его выполнить???на странице есть следующий скрипт:
<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 выполнить, может дальше по цепочке пойдёт само..
Глядя для чего это вообще,
если просто для постбэка, то наверное можно выполнить постбэк через
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