Javascript 如何发送带有公式字段的handsontable
我已经创建了带有公式字段的handsontable。当我保存表格时,我得到的是c数据表格中的公式,而不是公式结果。 hear是将表发送到C webmethod的代码:Javascript 如何发送带有公式字段的handsontable,javascript,c#,jquery,handsontable,Javascript,C#,Jquery,Handsontable,我已经创建了带有公式字段的handsontable。当我保存表格时,我得到的是c数据表格中的公式,而不是公式结果。 hear是将表发送到C webmethod的代码: var workTypeData = $.parseJSON(data.d[1]); var container = document.getElementById('example'); hot = new Handsontable(container, { data: workTypeData, rowHead
var workTypeData = $.parseJSON(data.d[1]);
var container = document.getElementById('example');
hot = new Handsontable(container, {
data: workTypeData,
rowHeaders: true,
contextMenu: false,
colHeaders: ['RoomDescriptionID', 'RoomDescriptionName', 'Area', 'Perimeter', 'Height'],
columns: [
{ data: 'RoomDescriptionID' },
{ data: 'RoomDescriptionName' },
{ data: 'Area' },
{ data: 'Perimeter' },
{ data: 'Height' }
],
formulas: true,
manualColumnResize: true
});
var mydata = JSON.stringify(hot.getData());
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "FormulaBuilder.aspx/OnSave",
data: "{ 'data' : '" + mydata + "' }",
success: function (data) {
if (data.d[0].length > 0) {
alert("error in code");
} else {
}
},
error: function (jqXhr, exception) {
alert("error in ajax");
}
});
var dt = JsonConvert.DeserializeObject<DataTable>(data);
下面是我的WebC方法:
var workTypeData = $.parseJSON(data.d[1]);
var container = document.getElementById('example');
hot = new Handsontable(container, {
data: workTypeData,
rowHeaders: true,
contextMenu: false,
colHeaders: ['RoomDescriptionID', 'RoomDescriptionName', 'Area', 'Perimeter', 'Height'],
columns: [
{ data: 'RoomDescriptionID' },
{ data: 'RoomDescriptionName' },
{ data: 'Area' },
{ data: 'Perimeter' },
{ data: 'Height' }
],
formulas: true,
manualColumnResize: true
});
var mydata = JSON.stringify(hot.getData());
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "FormulaBuilder.aspx/OnSave",
data: "{ 'data' : '" + mydata + "' }",
success: function (data) {
if (data.d[0].length > 0) {
alert("error in code");
} else {
}
},
error: function (jqXhr, exception) {
alert("error in ajax");
}
});
var dt = JsonConvert.DeserializeObject<DataTable>(data);
在这里,它返回公式而不是结果
谢谢。Handsontable不支持您编写公式的方式。评论是正确的,因为Handsontable是“类似excel”的,而不是真正的excel。这应该是一个简单的谷歌搜索,所以我建议你在发布之前做一点研究,但是如果你想得到这种类型的支持,你有两个选择 首先是自己实施。第二种是使用第三方库,如。后者可能就是你要找的 编辑: 它可能会对那些寻找添加公式支持的方法的人有用,所以这里是解决方案 第一步是为RuleJS导入必要的CSS和JS源文件。这可以通过以下方式完成,也可以将其下载到脱机工作:
<link rel="stylesheet" media="screen" href="http://handsontable.github.io/handsontable-ruleJS/lib/handsontable/handsontable.full.css">
<script src="http://handsontable.github.io/handsontable-ruleJS/lib/RuleJS/js/ruleJS.js"></script>
<script src="http://handsontable.github.io/handsontable-ruleJS/lib/handsontable/handsontable.formula.js"></script>
下一步是将formulas:true选项添加到热实例中。现在它应该开始工作了。我也遇到了同样的问题,但在的帮助下解决了 首先,您可以使用hot.plugin.helper.cellValue'CELL REF'获取实际值,但使用getData时,您将查看整个集合。为了解决这个问题,我基本上迭代了数组,用值替换所有公式单元格,直到'K'为止,我只需要列:
var aCols = ['A','B','C','D','E','F','G','H','I','J','K'];
var mydata = hot.getData();
for (i = 0; i < mydata.length; i++){
for(j = 0; j < mydata[i].length; j++){
if(mydata[i][j].toString().indexOf('=') > -1){
mydata[i][j] = hot.plugin.helper.cellValue (aCols[j] + (i+1));
}
}
}
欢迎来到SO!请重新措辞你的问题。不清楚你想要什么。添加更多的代码细节——比如变量hot中有什么,getData返回结果的格式是什么?Hi siva,我有一个问题。希望这对您有所帮助。我认为这与[excel]无关。[handsontable]类似excel,但不是excel。我已在github上发布了我的屏幕截图问题:我已在github上发布了我的屏幕截图问题:如果我在调用hot.getData时将公式设置为true,它将在数组中给出公式,我如何获得实际值?