2017-01-20 94 views
0

我正在使用儀表板和使用gridStack。我正在用ajax更新數據庫。數據是html元素的x,y位置(頁面上的某些div)。這裏是我的javascript代碼:調用ajax太多次後,Asp.net OnClick事件不會觸發。

// The "dragstop" fucntion is called when I stop dragging the <div> element. 

    $(".grid-stack").on("dragstop", function() { 
     setTimeout(function() { 
      saveAllWidgets(); 
     }, 100); 
    }); 


function saveAllWidgets() { 
    var serializedData = _.map($('.grid-stack > .grid-stack-item:visible'), function (el) { 
     el = $(el); 
     var id = el.attr('id'); 
     var node = el.data('_gridstack_node'); 
     return { 
      x: node.x, 
      y: node.y, 
      width: node.width, 
      height: node.height, 
      id: id 
     }; 
    }); 

    var jsonString = JSON.stringify(serializedData); 
    try { 
     $.ajax({ 
      type: "POST", 
      url: '/STARCOHttpHandlers/UpdateDashboardWidget.ashx', 
      contentType: "application/json; charset=utf-8", 
      data: jsonString, 
      dataType: "json", 
      success: function(data){ 
    //I am always getting the success response and I checked DB is also updating 
       console.log(data); 
      },     
      error: function(){ 
       console.log("some error occoured db is not updated!!"); 
      } 
     }); 
    } catch (e) { 
     alert(e); 
    } 
} 

現在的問題是,如果我太頻繁地調用上述函數(太多拖放)。然後點擊下面提到的asp.net按鈕,頁面重新加載,但OnClick事件不會觸發(同樣在調試模式下,代碼根本不會被調用)。頁面重新加載後,我點擊第二次按鈕,然後觸發onClick事件。

<asp:Button runat="server" ID="btnUndoChanges" CssClass="btn" Text="Undo all changes" OnClick="btnUndoChanges_OnClick"/> 

protected void btnUndoChanges_OnClick(object sender, EventArgs e) 
     { 

      return; 
     } 

我不知道爲什麼它的行爲如此。它可能與IIS安全或視圖狀態有關嗎?

回答

0

花了2天后,我發現這是ViewState的錯誤。我添加這可能會對使用GridStack的人有幫助.JS

我添加了下面幾行代碼,它解決了這個問題。

protected override void OnInit(EventArgs e) 
     { 
      Page.ViewStateMode = ViewStateMode.Disabled; 
     } 
相關問題