Выберите значение в множественном выборе через код C#
Ребята! Я должен автоматически установить значения некоторых полей с помощью кода в моем приложении win forms, которое содержит веб-браузер. Единственное, что не работает, это установка значения в множественном выборе. Я могу нажимать кнопки в коде, устанавливать поля текстового поля и т. Д., Но список с несколькими выборками не работает (не может правильно установить значение). Прежде всего, это HTML-код на странице для этого элемента:
<select size="10" name="someName" multiple="multiple" onchange="javascript:setTimeout('someFunc')" id="elementId" showconfirmedonly="true" showextraitems="true">
<option selected="selected" value="1">First opt</option>
<option value="2">Second opt</option>
<option value="3">Third opt</option>
<...other options...>
</select>
Я пытаюсь сначала отменить выбор всех элементов следующим образом:
webBrowser.Document.GetElementById(elementId).InnerHtml =
webBrowser.Document.GetElementById(elementId).InnerHtml.Replace(
"<option selected=\"selected\"", "<option");
и затем я пытаюсь выбрать (только один) нужный элемент (значение) следующим образом:
webBrowser.Document.GetElementById(elementIWantToSelectId).Focus();
element.SetAttribute("selected", "selected");
webBrowser.Document.GetElementById(elementIWantToSelectId).InvokeMember("onchange");
Сначала я должен отменить выбор выбранных опций и выбрать желаемый вариант. Если я попытаюсь изменить только html с помощью метода Replace, он не будет работать ни с установкой только выбранного атрибута. Другие поля на странице изменяются при изменении любого значения (когда вызывается функция onchange - я должен вызывать его при установке значения в любом месте), и поэтому мне нужно вызывать функцию "onchange". Когда код выполняется, все параметры исчезают, и поле множественного выбора остается пустым, что я нахожу действительно странным. Будем благодарны за любые предложения, как решить мою проблему.
1 ответ
Забудьте о замене бизнеса.
Что вам нужно сделать, так это установить "value
"атрибут"select
" HtmlElemnt
(не связывайтесь ни с одним из "option
" HtmlElement
)
webBrowser.Document.GetElementById(elementId).SetAttribute("value", "1");
Вы можете сделать это с помощью jQuery/ javascript
Этот пример кода может помочь вам.
$("select option").each(function(){
if ($(this).text() == "B")
$(this).attr("selected","selected");
});