2017-01-20 8 views
0

ダッシュボードで作業中で、gridStackを使用しています。データベースをajaxで更新しています。データは、html要素のx、y位置です(ページ上のいくつかのdiv)。ここに私のjavascriptのコードは次のとおりです。Asp.net OnClickイベントは、ajaxが何度も呼び出された後にトリガされません。

// 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イベントはトリガーされません(デバッグモードでも、コードはまったく呼び出されません)。 Pageがリロードされた後、このボタンでもう一度クリックすると、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; 
     } 
関連する問題