电子表格不呈现数据
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
}
})
};
})
});
我正在使用 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
}
})
};
})
});