&引用;setRowData";来自ag Grid won'的网格API的方法;即使在javascript对象打印值之后,也不能加载任何行
我已经开发了一个electron应用程序,它将使用ag grid呈现任何.csv文件的视图。但是如果我使用gridoptions.api.setRowData(data1),其中data1是一个javascript数组对象。应用程序不会显示任何行 electron应用程序读取.csv文件并将数据保存在javascript数组中。在使用ag grid时,如果我决定通过将rowData定义为&引用;setRowData";来自ag Grid won'的网格API的方法;即使在javascript对象打印值之后,也不能加载任何行,javascript,html,node.js,electron,ag-grid,Javascript,Html,Node.js,Electron,Ag Grid,我已经开发了一个electron应用程序,它将使用ag grid呈现任何.csv文件的视图。但是如果我使用gridoptions.api.setRowData(data1),其中data1是一个javascript数组对象。应用程序不会显示任何行 electron应用程序读取.csv文件并将数据保存在javascript数组中。在使用ag grid时,如果我决定通过将rowData定义为 data1.forEach(element => { rowData.push
data1.forEach(element => {
rowData.push({
time:element.Time,
level:element.Level,
desc:element.Description,
logger:element.Logger,
device:element.ExternalDevice
});
});
这里,data1是数组,time/level/desc/logger/device是rowdata字段。这可以很好地工作,并在网格中显示数据
但是,如果我想设计一个更通用的版本,并且决定不在rowData中键入文件,那么应该使用gridoptions.api.setRowData(data1)来加载数据。这部分不行
if(data == "MantechPro")
{
columnDefs = [
{
headerName: "Description",
field: "description",
width: 500,
minwidth: 200,
filter: true
},
{
headerName: "ExternalDevice",
field: "externaldevice",
},
{
headerName: "Level",
field: "level",
filter: true
},
{
headerName: "Logger",
field: "logger",
filter:true
},
{
headerName: "Time",
field: "time"
},
];
var gridOptions = {
defaultColDef:{resizable: true},
columnDefs: columnDefs,
//rowData: rowData,
pagination: true,
paginationPageSize: 20,
onGridReady: function (params) {
console.log(data1);
gridOptions.api.setRowData(data1);
params.api.sizeColumnsToFit();
window.addEventListener('resize', function() {
setTimeout(function() {
params.api.sizeColumnsToFit();
})
})
}
};
var eGridDiv = document.querySelector('#myGrid');
new agGrid.Grid(eGridDiv, gridOptions);
gridOptions.api.sizeColumnsToFit();
HTML看起来像这样
<!DOCTYPE html>
<html lang="en" style="height:100%;">
<head>
<script type="text/javascript" src="node_modules/ag-grid-
community/dist/ag-grid-community.js"></script>
<link rel="stylesheet" href="refresh_button.css">
<link rel="stylesheet" href="node_modules/ag-grid-
community/dist/styles/ag-grid.css"?>
<link rel="stylesheet" href="node_modules/ag-grid-
community/dist/styles/ag-theme-balham.css"?>
</head>
<body style="height:100%;">
<button type="button" id="refresh" class="button button2">Refresh-
Data</button>
<br></br>
<div id="myGrid" style="height: 80%; width:100%; position:
relative;overflow: hidden;" class="ag-theme-balham"></div>
</div>
<script type="text/javascript" src="load_agGrid.js"></script>
</body>
</html>
刷新-
资料
我认为您定义列定义的方式是错误的
数据对象的结构
{
time:element.Time,
level:element.Level,
desc:element.Description,
logger:element.Logger,
device:element.ExternalDevice
}
柱状结构
columnDefs = [
{
headerName: "Description",
field: "desc",
width: 500,
minwidth: 200,
filter: true
},
{
headerName: "ExternalDevice",
field: "device",
},
{
headerName: "Level",
field: "level",
filter: true
},
{
headerName: "Logger",
field: "logger",
filter:true
},
{
headerName: "Time",
field: "time"
},
];
此处def列中的字段应与数据对象中的属性名称匹配
此部分不工作
-您在浏览器控制台上看到任何错误吗?没有。没有错误,我甚至跟踪了ag grid->grid API的getModel()中的数据。它正确地显示了数据。你完全正确。所以我写了一个循环来定义ag网格的列。当我决定使用javascript对象数组作为“rowData”时,ag grid似乎希望columnDefs的字段名与对象属性名匹配。需要考虑的东西,嗯!!!
{
time:element.Time,
level:element.Level,
desc:element.Description,
logger:element.Logger,
device:element.ExternalDevice
}