电子表格不呈现数据

时间:2020-04-20 05:37:08

标签: jquery kendo-ui

我正在使用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"
      }
    ]
  }
]

这就是我所希望的,但是,无论我设置了rows属性后调用了refresh()如何,小部件都不会更新以反映新数据。

这是一个错误还是我只是缺少一些东西?

1 个答案:

答案 0 :(得分:1)

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

通过在rows上设置activeSheet,我正在创建返回对象的先前未定义的属性。相反,我必须调用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
                }
            })
        };
    })
});
相关问题