2013-12-23 2 views
0

У меня есть div внутри UpdatePanel, этот div отображается, когда вы нажимаете на ссылку для редактирования. Кнопки отправки для сохранения находятся внутри этого div. Теперь, когда вы нажимаете кнопку отправки, все в порядке, за исключением того, что этот div автоматически скрыт! видимость изменяется с клиентской стороны, используя jQuery.Div скрыто после отправки в UpdatePanel

Почему UpdatePanel скрывает мой div, хотя он был показан мной? Я попытался установить runat='server' и включить viewstate, но я получаю тот же результат.

Как я могу сообщить UpdatePanel to leave the div `, как это было до подачи?

Вот мини-проект, который показывает проблему:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
      <div> 
       <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
       <a href="#" id="edit-link">edit</a> 
      </div> 
      <div id="edit-div" style="display:none; border: 2px black solid;"> 
       <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
      </div> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</form> 

<script> 
    $(document).ready(function(){ 
     $('#edit-link').on('click', function() { 
      $('#edit-div').show(); 
     }); 
    }); 
</script> 

Код для кнопки отправки:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = DateTime.UtcNow.ToString(); 
} 

ответ

1

Самое простое решение этой проблемы было бы: -

  1. не использовать jQuery для отображения edit-div
  2. сделатьсерверный элемент управления
  3. конвертировать ваши <a href="#" id="edit-link">edit</a> к <asp:LinkButton> управления, а также в его стороне сервера щелкните событие, показать ваши изменения ДИВ

Проблема заключается в том, что UpdatePanel восстанавливает исходное состояние в соответствии с разметкой страница; edit-div не является управляющим сервером, и вы показываете его через клиентский скрипт, UpdatePanel не знает об этом и всегда будет возвращать оригинальную разметку.

способы заставить jQuery играть с UpdatePanels в этих сценариях, но он более востребован, чем простое решение выше.

Надеюсь, что это поможет.