Выберите значение в множественном выборе через код 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");
});
Другие вопросы по тегам