jsGrid: How to delay updates to grid until callback finishes?












0















I am using js-grid for performing inline edits. I am using the callbacks onItemInserting, onItemUpdating andonItemDeleting to make AJAX calls to perform server-side INSERT, UPDATE and DELETE operations respectively. However the issue is the client side updates to grid are happening before callbacks of the AJAX calls are executed. As a result, client side updates are taking place irrespective of server-side operation result.



Here is partial code of my application:



   function displayConfigTable(config) {

let parameters = {
configName: config
};

$.getJSON("/configure", parameters, function(data, textStatus, jqXHR) {

displayGrid(config, data);
});

}

function onUpdateCallback({
grid, // grid instance
row, // updating row jQuery element
item, // updating item
itemIndex, // updating item index
previousItem, // shallow copy (not deep copy) of item before editing
}) {
//TODO:

}


function onDeleteCallback({
grid, // grid instance
row, // deleting row jQuery element
item, // deleting item
itemIndex, // deleting item index
}) {
//TODO:

}

function onInsertCallback({grid,item}) {
var config = grid.configName;

var data = {
configName: grid.configName,
item: item
};

$.ajax({
type: 'POST',
contentType: 'application/json',
url: '/updateConfig',
dataType : 'json',
data : JSON.stringify(data),
success : function(result) {
alert(result);

**//This is where I want the client-side update to happen to the grid**

},error : function(result){
console.log(result);

**//this is where I want to cancel the client side update to grid**
}
});

}



function displayGrid(config,data) {

var fields = ;
switch(config) {
case "category":
fields = [
{name: "Id",visible:false,width:0},
{ name: "Name", type: "text", width: 250, validate: "required" },
{ type: "control" }]

break;
default:
break;
}

$("#jsGrid").jsGrid({
width: "100%",
height: "auto",

inserting: true,
editing: true,
sorting: true,
paging: false,

data: data,
fields: fields,
configName:config,
onItemInserting:onInsertCallback,
onItemUpdating:onUpdateCallback,
onItemDeleting:onDeleteCallback
});

}









share|improve this question



























    0















    I am using js-grid for performing inline edits. I am using the callbacks onItemInserting, onItemUpdating andonItemDeleting to make AJAX calls to perform server-side INSERT, UPDATE and DELETE operations respectively. However the issue is the client side updates to grid are happening before callbacks of the AJAX calls are executed. As a result, client side updates are taking place irrespective of server-side operation result.



    Here is partial code of my application:



       function displayConfigTable(config) {

    let parameters = {
    configName: config
    };

    $.getJSON("/configure", parameters, function(data, textStatus, jqXHR) {

    displayGrid(config, data);
    });

    }

    function onUpdateCallback({
    grid, // grid instance
    row, // updating row jQuery element
    item, // updating item
    itemIndex, // updating item index
    previousItem, // shallow copy (not deep copy) of item before editing
    }) {
    //TODO:

    }


    function onDeleteCallback({
    grid, // grid instance
    row, // deleting row jQuery element
    item, // deleting item
    itemIndex, // deleting item index
    }) {
    //TODO:

    }

    function onInsertCallback({grid,item}) {
    var config = grid.configName;

    var data = {
    configName: grid.configName,
    item: item
    };

    $.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: '/updateConfig',
    dataType : 'json',
    data : JSON.stringify(data),
    success : function(result) {
    alert(result);

    **//This is where I want the client-side update to happen to the grid**

    },error : function(result){
    console.log(result);

    **//this is where I want to cancel the client side update to grid**
    }
    });

    }



    function displayGrid(config,data) {

    var fields = ;
    switch(config) {
    case "category":
    fields = [
    {name: "Id",visible:false,width:0},
    { name: "Name", type: "text", width: 250, validate: "required" },
    { type: "control" }]

    break;
    default:
    break;
    }

    $("#jsGrid").jsGrid({
    width: "100%",
    height: "auto",

    inserting: true,
    editing: true,
    sorting: true,
    paging: false,

    data: data,
    fields: fields,
    configName:config,
    onItemInserting:onInsertCallback,
    onItemUpdating:onUpdateCallback,
    onItemDeleting:onDeleteCallback
    });

    }









    share|improve this question

























      0












      0








      0


      1






      I am using js-grid for performing inline edits. I am using the callbacks onItemInserting, onItemUpdating andonItemDeleting to make AJAX calls to perform server-side INSERT, UPDATE and DELETE operations respectively. However the issue is the client side updates to grid are happening before callbacks of the AJAX calls are executed. As a result, client side updates are taking place irrespective of server-side operation result.



      Here is partial code of my application:



         function displayConfigTable(config) {

      let parameters = {
      configName: config
      };

      $.getJSON("/configure", parameters, function(data, textStatus, jqXHR) {

      displayGrid(config, data);
      });

      }

      function onUpdateCallback({
      grid, // grid instance
      row, // updating row jQuery element
      item, // updating item
      itemIndex, // updating item index
      previousItem, // shallow copy (not deep copy) of item before editing
      }) {
      //TODO:

      }


      function onDeleteCallback({
      grid, // grid instance
      row, // deleting row jQuery element
      item, // deleting item
      itemIndex, // deleting item index
      }) {
      //TODO:

      }

      function onInsertCallback({grid,item}) {
      var config = grid.configName;

      var data = {
      configName: grid.configName,
      item: item
      };

      $.ajax({
      type: 'POST',
      contentType: 'application/json',
      url: '/updateConfig',
      dataType : 'json',
      data : JSON.stringify(data),
      success : function(result) {
      alert(result);

      **//This is where I want the client-side update to happen to the grid**

      },error : function(result){
      console.log(result);

      **//this is where I want to cancel the client side update to grid**
      }
      });

      }



      function displayGrid(config,data) {

      var fields = ;
      switch(config) {
      case "category":
      fields = [
      {name: "Id",visible:false,width:0},
      { name: "Name", type: "text", width: 250, validate: "required" },
      { type: "control" }]

      break;
      default:
      break;
      }

      $("#jsGrid").jsGrid({
      width: "100%",
      height: "auto",

      inserting: true,
      editing: true,
      sorting: true,
      paging: false,

      data: data,
      fields: fields,
      configName:config,
      onItemInserting:onInsertCallback,
      onItemUpdating:onUpdateCallback,
      onItemDeleting:onDeleteCallback
      });

      }









      share|improve this question














      I am using js-grid for performing inline edits. I am using the callbacks onItemInserting, onItemUpdating andonItemDeleting to make AJAX calls to perform server-side INSERT, UPDATE and DELETE operations respectively. However the issue is the client side updates to grid are happening before callbacks of the AJAX calls are executed. As a result, client side updates are taking place irrespective of server-side operation result.



      Here is partial code of my application:



         function displayConfigTable(config) {

      let parameters = {
      configName: config
      };

      $.getJSON("/configure", parameters, function(data, textStatus, jqXHR) {

      displayGrid(config, data);
      });

      }

      function onUpdateCallback({
      grid, // grid instance
      row, // updating row jQuery element
      item, // updating item
      itemIndex, // updating item index
      previousItem, // shallow copy (not deep copy) of item before editing
      }) {
      //TODO:

      }


      function onDeleteCallback({
      grid, // grid instance
      row, // deleting row jQuery element
      item, // deleting item
      itemIndex, // deleting item index
      }) {
      //TODO:

      }

      function onInsertCallback({grid,item}) {
      var config = grid.configName;

      var data = {
      configName: grid.configName,
      item: item
      };

      $.ajax({
      type: 'POST',
      contentType: 'application/json',
      url: '/updateConfig',
      dataType : 'json',
      data : JSON.stringify(data),
      success : function(result) {
      alert(result);

      **//This is where I want the client-side update to happen to the grid**

      },error : function(result){
      console.log(result);

      **//this is where I want to cancel the client side update to grid**
      }
      });

      }



      function displayGrid(config,data) {

      var fields = ;
      switch(config) {
      case "category":
      fields = [
      {name: "Id",visible:false,width:0},
      { name: "Name", type: "text", width: 250, validate: "required" },
      { type: "control" }]

      break;
      default:
      break;
      }

      $("#jsGrid").jsGrid({
      width: "100%",
      height: "auto",

      inserting: true,
      editing: true,
      sorting: true,
      paging: false,

      data: data,
      fields: fields,
      configName:config,
      onItemInserting:onInsertCallback,
      onItemUpdating:onUpdateCallback,
      onItemDeleting:onDeleteCallback
      });

      }






      javascript ajax jsgrid






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 25 '18 at 17:51









      Bhanuprakash DBhanuprakash D

      550514




      550514
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53470247%2fjsgrid-how-to-delay-updates-to-grid-until-callback-finishes%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53470247%2fjsgrid-how-to-delay-updates-to-grid-until-callback-finishes%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

          Calculate evaluation metrics using cross_val_predict sklearn

          Insert data from modal to MySQL (multiple modal on website)