В принципе, у меня есть раскрывающийся список с идентификатором и тегом 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. Его решение легкое и было очень легко реализовать. Выше я обновил свой код, чтобы отразить изменения, которые я сделал.
Вы должны использовать специальные свойства этого элемента управления. Попробуйте использовать msgbox (myDropDown.SelectedValue) ". Вы можете увидеть список свойств здесь: https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist_properties(v=vs.110).aspx
<input type="hidden" id="ddlselect" runat="server" value="" />
, при изменении параметра ddl сохраните выбранное значение в этом, например,ddlselect
а затем получите значение из vb. обновление: так что вам не нужно управление ddl на стороне сервера, а простоselect
.