2016-09-14 2 views
0

У меня есть панель обновления asp.net с некоторыми элементами управления devexpress внутри нее.JQuery Draggable перестает работать внутри updatepanel после обратной передачи

<asp:UpdatePanel ID="upInsertPartNumber" runat="server"> 
    <ContentTemplate> 
     <div id="divSAFRReceivingPanel" style="width: 50%; position: fixed;">   
      <dx:ASPxFormLayout runat="server" ID="frmControlPanel" AlignItemCaptionsInAllGroups="True"> 
        ... textbox here 
        ... submit button here 
      </dx:ASPxFormLayout> 
     </div> 

Существует также div, к которому я привязал поведение jquery draggable. Когда он сначала загружается, он работает нормально. Однако, как только я подаю форму, div получает свое исходное положение и теряет свою перегруженность.

JQuery:

$(function() { 
    ResetPanel(); 
}); 

function ResetPanel() { 
    $('#divSAFRReceivingPanel').draggable({ revert: 'false' });    
} 

В идеале, я хочу иметь перетаскиваемую DIV, чтобы сохранить свою позицию и draggability даже после того, как форма была отправлена. Любые мысли о том, как это сделать? Благодаря!

+0

Форма отправляет через звонок ajax? –

ответ

1

Ну, это потому, что, когда вы поднять событие постбэк ocurrs и только содержание в UpdatePanel обновляется, поэтому ваши элементы теряют функциональность они имеют перед постбэка.

Что вы можете сделать, это:

  • Чтобы отслеживать положение Div перед обратной передачи
  • Когда обратной передачи ocurrs пересылаться JavaScript на стороне сервера (C#) на стороне клиента (браузер), может быть, как этот

    ClientScript.RegisterStartupScript(this.GetType(), "ResetPanelWithPosition();", funcCall); 
    
  • Создайте функцию ResetPanelWithPosition(), что вновь присоединить перетаскиваемое поведение и установить последнюю позицию, которую вы храните в первом шаге.
Смежные вопросы