HTML Выберите количество элементов в asp.net
Привет у меня есть HTML select
контроль на моей странице ASP.NET, и я сделал это как runat = "server"
и теперь я попытался добавить некоторые элементы списка динамически. что-то вроде ниже кода
var list = document.getElementById('<%=list1.ClientID%>');
var newListItem = document.createElement('OPTION');
newListItem.text = "Emp1";
newListItem.value = "e101";
list.add(newListItem);
<asp:Panel ID="pnlemp" runat="server"
Style="display: none;"
CssClass="modalPopup"
width="700px" Height="350px">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<select id="list1" multiple="true" name="list1" runat="server">
</select>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
и теперь, когда я пытаюсь получить доступ к этому из моего кода, как list1.Items.Count
это показывает 0
,
Что-то не так в этом?
заранее спасибо
2 ответа
Для решения этой проблемы либо добавляйте элементы динамически с помощью кода на стороне сервера, либо не добавляйте серверную часть в рисунок и обрабатывайте все с помощью javascript.
Элементы, добавленные с помощью javascript, не будут сохраняться asp.net. Более того, вы можете получить исключение "Недопустимый обратный вызов или Аргумент PostBack" для того же самого, потому что оно не поймет, откуда эти элементы списка (опции) были добавлены в Select.
Когда вы изменяете html в сценарии на стороне клиента, viewstate (который отслеживает все элементы управления) не обновляется. Это приводит к тому, что когда вы делаете постбэк, новые предметы не "там" .
Иногда есть javascript __doPostBack(), который вызывает обратную передачу, но я не уверен, что это сработает.