Получение значения из динамического asp: DropDownList

2

В принципе, у меня есть раскрывающийся список с идентификатором и тегом runat = "server" и находится внутри asp: TableCell. В исходном DDL нет параметров, но через javascript я заполняю раскрывающееся меню некоторыми параметрами, которые обновляют мою таблицу на передней панели. При нажатии кнопки, через мой код vb.net, мне нужно получить текст внутри ddl. Любые предложения о том, как это сделать, будут приятными. Заранее спасибо, и если вам нужна дополнительная информация от меня, пожалуйста, дайте мне знать.

PS Я не могу использовать ajax с этим проектом.

[HTML] - Просто показ tablecell и ddl

<asp:TableCell ID="ocProduct">
    <asp:DropDownList ID="myDropDown"  CssClass="ocProduct" 
      OnChange="indexChanged(this);" runat="server">
    </asp:DropDownList>
</asp:TableCell>


<input type="hidden" id="ddlselect" runat="server" value="" /> 
<!-- This was the added html field -->

[VB.net]

Protected Sub updateWeight_Click(Sender As Object, e As EventArgs)
  msgbox(myDropDown.text) ' does not work
  msgbox(mytable.rows(1).cells(0).text) ' does not work
  msgbox(myTable.rows(1).cells(0).controls(0).toString) ' does not work
  msgbox(myDrowDown.selectedValue) ' does not work
  ' All of these are returning "" 

  msgbox(ddlselect.value) ' This returned the correct answer. 
end sub 

[JavaScript] - Это просто показывает, как я загружаю ddl

var ddl = document.getElementById('myDropDown');
var tempOption = document.createElement('option');
tempOption.text = "Please select an option..."
tempOption.value = 0;
ddl.options.add(tempOption);

for (var i = 1; i <= counter; i++) {
    var option = document.createElement('option');
    var tempArray = parsePerHash(i); 

    option.text = tempArray[0];
    option.value = i;

    ddl.options.add(option);   
    }
};



function indexChanged(ddl) {
    document.getElementById("ddlselect").value = myArray[0];
};

Обновление после ответа: комментарий Нелека спас мне жизнь. Хотя я знал, что postback удаляет мои записи, мне нужен способ захватить то, что было в ddl. Его решение легкое и было очень легко реализовать. Выше я обновил свой код, чтобы отразить изменения, которые я сделал.

  • 0
    это потому, что вы заполняете ddl js и пытаетесь получить значения из бэкэнда ... после нажатия на кнопку страница перезагружается, и вы потеряете все значения, элементы управления и т. д., созданные / добавленные на стороне клиента ... попробуйте добавить скрытое поле <input type="hidden" id="ddlselect" runat="server" value="" /> , при изменении параметра ddl сохраните выбранное значение в этом, например, ddlselect а затем получите значение из vb. обновление: так что вам не нужно управление ddl на стороне сервера, а просто select .
  • 0
    Вы, сэр, заслуживаете золотую медаль. Я потратил две недели, пытаясь заставить ajax, jquery и другие фреймворки работать с моим приложением, и это был лучший совет, который я когда-либо встречал. Спасибо.
Показать ещё 2 комментария

1 ответ

0

Вы должны использовать специальные свойства этого элемента управления. Попробуйте использовать msgbox (myDropDown.SelectedValue) ". Вы можете увидеть список свойств здесь: https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist_properties(v=vs.110).aspx

  • 0
    Это все равно вернуло мне строку "" вместо фактического значения внутри ddl.
  • 0
    Возможно, что значение не отправляется обратно на сервер. Попробуйте добавить AutoPostBack = "true" в выпадающий список и посмотрите, поможет ли это вообще.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню