javascript - Handsontable更新公式变量

标签 javascript jquery handsontable

我有手办:

var dataObject = [
  ['', '', '', '', '', '', 2017, 2017, 2017],
  ['Item ID', 'Item Name', '', 'Split', 'Weighed LRA', 'LRA', 3, 2, 1],
  ['556874', 'POMEGRANATE PEONY BB 1L', '', '=ROUND(CONCEPT_SUM*E3;0)', '=F3/SUM(F3:F5)', "=IF(SUM(G3:I3)=0,0,AVERAGEIF(G3:I3, '<>0'))", 0.13, 0.45, 0.26],
  ['569066', 'POMEGRANATE PEONY BB 1L', '', '=ROUND(CONCEPT_SUM*E4;0)', '=F4/SUM(F3:F5)', "=IF(SUM(G4:I4)=0,0,AVERAGEIF(G4:I4, '<>0'))", 0, 0, 0],
  ['569076', 'POMEGRANATE PEONY BB 1L', '', '=ROUND(CONCEPT_SUM*E5;0)', '=F5/SUM(F3:F5)', "=IF(SUM(G5:I5)=0,0,AVERAGEIF(G5:I5, '<>0'))", 0.13, 0, 0]
]


var hotElement = document.querySelector('#hot')
var hotSettings = {
  data: dataObject,
  licenseKey: 'non-commercial-and-evaluation',
  colWidths: [80, 200, 17, 100, 90, 90, 50, 50, 50],
  contextMenu: false,
  rowHeaders: true,
  colHeaders: true,
  formulas: {
    variables: {
      CONCEPT_SUM: 400,
    }
  }
};
var hot = new Handsontable(hotElement, hotSettings)

$('#split-sum').change(function(event) {
  hot.updateSettings({
    formulas: {
      variables: {
        CONCEPT_SUM: parseInt($('#split-sum').val())
      }
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.css" rel="stylesheet" media="screen">

<input id="split-sum" name="split-sum" title="Concept/Offer Sum" type="text" value="" placeholder="Concept/Offer Sum">
<div id="app">
  <div id="hot">
  </div>
</div>

我想在输入框更改后更新公式变量。

下面的代码行似乎什么也没做

hot.updateSettings({formulas: { variables: { CONCEPT_SUM: parseInt($('#split-sum').val()) } }});

最佳答案

我会使用 functions from formula plugin 而不是使用 updateSettings .

您可以尝试以下方法:

$('#split-sum').change(function(event) {
  var formulaPlugin = hot.getPlugin('formulas');
  formulaPlugin.setVariable('CONCEPT_SUM', parseInt($('#split-sum').val()));
  formulaPlugin.recalculateFull();
});

首先,使用 setVariable 设置 CONCEPT_SUM 变量,然后再次强制单元格计算。

关于javascript - Handsontable更新公式变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60887575/

相关文章:

javascript - 为什么我的网站上不能有超过 1-2 个谷歌地图?

javascript - 如何将div内的内容克隆到其他div

jquery mobile border-left 不为某些输入类型呈现

javascript - 如何使用 Handsontable 根据另一个自动完成单元格更新单元格

javascript - 使用异步函数等待来自 onclick 的用户输入

javascript - 如何通过从对象获取来循环将消息添加到字符串中?

javascript - 如何停止backbone.js中的传播

jquery - 将脚本添加到 jquery mobile 中的外部页面而不是主文件

css - 在单击鼠标右键之前,HandsOnTable 不会呈现所有列

javascript - 获取选定行的单元格值