回发后,JQuery Draggable停止在updatepanel内部工作

时间:2016-09-14 13:43:54

标签: jquery asp.net jquery-ui

我有一个asp.net更新面板,里面有一些devexpress控件。

 <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来维持其位置和可拖动性。有关如何做到这一点的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,那是因为当你提升一个事件一个回发ocurrs 时,只会更新UpdatePanel中的内容因此,您的元素将丢失回发之前的功能。

你能做的是:

  • 在回发前跟踪div的位置
  • 当postback ocurrs从服务器端(C#)向客户端(浏览器)发送一些javascript时,可能就像这样

    ClientScript.RegisterStartupScript(this.GetType(), "ResetPanelWithPosition();", funcCall); 
    
  • 创建一个函数ResetPanelWithPosition(),重新附加可拖动行为并设置您在第一步中存储的最后位置。