Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript handsontable-刷新数据并维护筛选和排序条件_Javascript_Angular_Handsontable - Fatal编程技术网

Javascript handsontable-刷新数据并维护筛选和排序条件

Javascript handsontable-刷新数据并维护筛选和排序条件,javascript,angular,handsontable,Javascript,Angular,Handsontable,我使用handsontable作为Web服务器上MySQL数据库的前端。用户过滤、排序、修改前端手持设备上的数据 由于各种原因,后端MySQL数据库中会发生更改。我需要将这些信息同步回用户前端 我可以使用HTTP请求从数据库中重新下载数据,并使用以下代码片段将数据写入handsontable,从而轻松完成此操作 $http({ method: "POST", url: "my-data-url", data: "my-post-data" }).then(functi

我使用handsontable作为Web服务器上MySQL数据库的前端。用户过滤、排序、修改前端手持设备上的数据

由于各种原因,后端MySQL数据库中会发生更改。我需要将这些信息同步回用户前端

我可以使用HTTP请求从数据库中重新下载数据,并使用以下代码片段将数据写入handsontable,从而轻松完成此操作

$http({
    method: "POST",
    url: "my-data-url",
    data: "my-post-data"
  }).then(function(response){
    // response contains the handsontable data
    var json_response = response.data;
    // Update the data in my table instance
    hot.updateSettings({
        data: json_response
    })
    // hot looses its sort and filter conditions...
    // how can I maintain these or re-apply them??
  });

问题是此代码清除了所有用户当前的排序和筛选条件。我希望在更新handsontable数据对象时保存这些内容。有人知道我如何做到这一点吗?

我设法解决了这个问题。各方面的解决方案如下:

$http({
  method: "POST",
  url: "my-data-url",
  data: "my-post-data"
}).then(function(response){
  // response contains the handsontable data
  var json_response = response.data;

  // Get sort data of handsontable prior to updating the data setting
  if (isSorted(hot) == true) {
      var sortData = getSortData(hot)
  } 

  // Update the data in my table instance
  hot.updateSettings({
      data: json_response
  })

  // Re-apply previous sorts
  if (sortData) {
      hot.sort(sortData.sortColumn, sortData.sortOrder);
  }

  });

// Determines if sorts have been applied
var isSorted = function (hot_instance) {
    return hot_instance.sortingEnabled && typeof hot_instance.sortColumn != 'undefined' && typeof hot_instance.sortOrder != 'undefined';
}

// gets the sort data for a handsontable passed
var getSortData = function (hot_instance) {
  var sortData = [];
  // Get sorted column number
  var columnNo = hot_instance.sortColumn;
  // Get current sort order of column
  // false = desceding order
  var sortOrder = hot_instance.sortOrder;
  sortData.sortColumn = columnNo;
  sortData.sortOrder = sortOrder;
  return sortData;
}
过滤器

更新数据设置时,将Handsontable版本更新为v1.11.0版会自行维护过滤器

排序

更新上述方法如下:

$http({
  method: "POST",
  url: "my-data-url",
  data: "my-post-data"
}).then(function(response){
  // response contains the handsontable data
  var json_response = response.data;

  // Get sort data of handsontable prior to updating the data setting
  if (isSorted(hot) == true) {
      var sortData = getSortData(hot)
  } 

  // Update the data in my table instance
  hot.updateSettings({
      data: json_response
  })

  // Re-apply previous sorts
  if (sortData) {
      hot.sort(sortData.sortColumn, sortData.sortOrder);
  }

  });

// Determines if sorts have been applied
var isSorted = function (hot_instance) {
    return hot_instance.sortingEnabled && typeof hot_instance.sortColumn != 'undefined' && typeof hot_instance.sortOrder != 'undefined';
}

// gets the sort data for a handsontable passed
var getSortData = function (hot_instance) {
  var sortData = [];
  // Get sorted column number
  var columnNo = hot_instance.sortColumn;
  // Get current sort order of column
  // false = desceding order
  var sortOrder = hot_instance.sortOrder;
  sortData.sortColumn = columnNo;
  sortData.sortOrder = sortOrder;
  return sortData;
}

希望这能帮助有类似问题的人。

我设法解决了这个问题。各方面的解决方案如下:

$http({
  method: "POST",
  url: "my-data-url",
  data: "my-post-data"
}).then(function(response){
  // response contains the handsontable data
  var json_response = response.data;

  // Get sort data of handsontable prior to updating the data setting
  if (isSorted(hot) == true) {
      var sortData = getSortData(hot)
  } 

  // Update the data in my table instance
  hot.updateSettings({
      data: json_response
  })

  // Re-apply previous sorts
  if (sortData) {
      hot.sort(sortData.sortColumn, sortData.sortOrder);
  }

  });

// Determines if sorts have been applied
var isSorted = function (hot_instance) {
    return hot_instance.sortingEnabled && typeof hot_instance.sortColumn != 'undefined' && typeof hot_instance.sortOrder != 'undefined';
}

// gets the sort data for a handsontable passed
var getSortData = function (hot_instance) {
  var sortData = [];
  // Get sorted column number
  var columnNo = hot_instance.sortColumn;
  // Get current sort order of column
  // false = desceding order
  var sortOrder = hot_instance.sortOrder;
  sortData.sortColumn = columnNo;
  sortData.sortOrder = sortOrder;
  return sortData;
}
过滤器

更新数据设置时,将Handsontable版本更新为v1.11.0版会自行维护过滤器

排序

更新上述方法如下:

$http({
  method: "POST",
  url: "my-data-url",
  data: "my-post-data"
}).then(function(response){
  // response contains the handsontable data
  var json_response = response.data;

  // Get sort data of handsontable prior to updating the data setting
  if (isSorted(hot) == true) {
      var sortData = getSortData(hot)
  } 

  // Update the data in my table instance
  hot.updateSettings({
      data: json_response
  })

  // Re-apply previous sorts
  if (sortData) {
      hot.sort(sortData.sortColumn, sortData.sortOrder);
  }

  });

// Determines if sorts have been applied
var isSorted = function (hot_instance) {
    return hot_instance.sortingEnabled && typeof hot_instance.sortColumn != 'undefined' && typeof hot_instance.sortOrder != 'undefined';
}

// gets the sort data for a handsontable passed
var getSortData = function (hot_instance) {
  var sortData = [];
  // Get sorted column number
  var columnNo = hot_instance.sortColumn;
  // Get current sort order of column
  // false = desceding order
  var sortOrder = hot_instance.sortOrder;
  sortData.sortColumn = columnNo;
  sortData.sortOrder = sortOrder;
  return sortData;
}
希望这能帮助有类似问题的人