Значение, установленное с помощью JavaScript, не сохраняется при обратной передаче - PullRequest
2 голосов
/ 03 ноября 2010

У меня есть два элемента управления списком на моей странице asp.net, и я заполняю второй элемент управления списком, используя javascript.Проблема в том, что скрипт выполняется, и я вижу, как значение перемещается из первого списка (ConfiguredOrgListBox) во второе окно списка (SelectedOrgListBox), но когда я пытаюсь сохранить с помощью кнопки отправки, я нахожу свой второй список пустым и первое окно списка, как было раньше,Ниже приведен сценарий и разметка.

    //call this method to register the script    
    private void CreateMoveOrganizationScript(StringBuilder sb) {
        sb.Append( @"<script language=javascript type=text/javascript>;
                    function moveOrganisation() {");            
        sb.Append( @"var source = document.getElementById('"+ ConfiguredOrgListBox.ClientID  +@"');
                    var target = document.getElementById('"+SelectedOrgListBox.ClientID+ @"');
                    if ((source != null) && (target != null)) {
                    var newOption = new Option();
                    newOption.text = source.options[source.options.selectedIndex].text;
                    newOption.value = source.options[source.options.selectedIndex].value;

                    target.options[target.length] = newOption;
                    source.remove(source.options.selectedIndex)  ;
                    }            
                } </script>");            
    }

Разметка

      <asp:Label ID="ConfiguredOrgLabel" runat="server" Text="Available Organizations"></asp:Label><br />
      <asp:ListBox ID="ConfiguredOrgListBox" runat="server" Width="98%" Height="100px"></asp:ListBox>
       <input id="MoveOrgRight" type="button" value=">>" onclick="moveOrganisation()" />
      <asp:Label ID="SelectedOrgLabel" runat="server" Text="Selected VNA Organizations"></asp:Label><br />
      <asp:ListBox ID="SelectedOrgListBox" runat="server" Width="98%" Height="100px"></asp:ListBox>

Пожалуйста, дайте мне знать, что я делаю неправильно

С уважением, JeeZ

Ответы [ 2 ]

3 голосов
/ 03 ноября 2010

Согласно это , это потому, что окно списка не отправляет обратно, чтобы сообщить фону, что оно изменилось. Они используют скрытое поле, которое содержит информацию о том, какие изменения были сделаны с помощью JavaScript, а затем при обратной передаче обновляет серверную часть.

3 голосов
/ 03 ноября 2010

Вам необходимо обработать эти изменения во время обратной передачи.Когда происходит обратная передача, механизм ASP.NET загружает данные элемента управления из состояния просмотра и не знает, что клиент изменил значения с помощью javascript, поэтому вам следует вручную извлечь эти значения из запроса.

...