电子表格不呈现数据

Spreadsheet Not Rendering Data

我正在使用 kendo-ui 的电子表格小部件试图动态加载只读数据。因为,据我所知,没有办法导入 CSV 文字,我通过使用 jquery-csv 库和 $.map 函数将我的 CSV 数据转换为适当的格式。

这就是我正在做的事情:

var rows = $.csv.toArrays(viewModel.Csv);

$("#spreadsheet-preview").data("kendoSpreadsheet").activeSheet().rows = $.map(rows, function(row) {
    return {
        "cells": $.map(row, function(cell) {
            return {
                "background": "#ffffff",
                "color": "#343a40",
                "enable": false,
                "value": cell
            }
        })
    };
});
$("#spreadsheet-preview").data("kendoSpreadsheet").refresh();

之后每当我在浏览器的控制台中检查 $("#spreadsheet-preview").data("kendoSpreadsheet").activeSheet().rows 的结果时,返回的值为:

[
  {
    "cells": [
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "John"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "Smith"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "5555551234"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "user@email.com"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "123 Main St"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "Anytown"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "LA"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "12345"
      },
      {
        "background": "#ffffff",
        "color": "#343a40",
        "enable": false,
        "value": "4/19/2020"
      }
    ]
  }
]

这正是我所期望的,但是小部件永远不会更新以反映新数据,无论在我设置行 属性.[=14= 后调用的 refresh() ]

这是一个错误还是我只是遗漏了什么?

所以,我知道我在 15 分钟前问过这个问题,但我能够解决这个问题。

通过在 activeSheet 上设置 rows,我创建了一个先前未定义的 属性 返回对象。相反,我不得不调用 fromJSON method 并通过我的映射向方法传递一个带有 rows 属性 的对象。

解决方法如下:

$("#spreadsheet-preview").data("kendoSpreadsheet").activeSheet().fromJSON({
    "rows": $.map(rows, function(row) {
        return {
            "cells": $.map(row, function(cell) {
                return {
                    "background": "#ffffff",
                    "color": "#343a40",
                    "enable": false,
                    "value": cell
                }
            })
        };
    })
});