Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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_C#_Jquery_Handsontable - Fatal编程技术网

Javascript 如何发送带有公式字段的handsontable

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

我已经创建了带有公式字段的handsontable。当我保存表格时,我得到的是c数据表格中的公式,而不是公式结果。 hear是将表发送到C webmethod的代码:

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,它将在数组中给出公式,我如何获得实际值?