HTML Выберите количество элементов в asp.net - PullRequest
2 голосов
/ 09 февраля 2012

Привет, у меня есть элемент управления 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 ]

1 голос
/ 09 февраля 2012

Когда вы изменяете html в сценарии на стороне клиента, viewstate (который отслеживает все элементы управления) не обновляется. Это приводит к тому, что когда вы делаете постбэк, новые элементы не «там».

Иногда есть javascript __doPostBack (), который вызывает обратную передачу, но я не уверен, что он будет работать.

0 голосов
/ 09 февраля 2012

Для решения этой проблемы либо добавьте элементы динамически через код на стороне сервера или не переносите серверную часть на изображение и обрабатывайте все с помощью JavaScript.

Элементы, добавленные с помощью javascript, не будут сохраняться asp.net. Более того, вы можете получить исключение «Недопустимый обратный вызов или Аргумент PostBack» для того же самого, потому что оно не поймет, откуда эти элементы списка (опции) были добавлены в Select.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...