我是angularjs技术的新手.我正在使用ag-grid并想要动态显示列
我的json数据是:
[{Date:'12-12-2015',Name:'ammu',mark:20},{Date:'12-12-2015',Name:'appu',mark:24},{Date:'12-12-2015',Name:'anu',mark:27},{Date:'13-12-2016',Name:'ammu',mark:23},{Date:'13-12-2015',Name:'anu',mark:20}]
Run Code Online (Sandbox Code Playgroud)
我的预期产出是 预期产出
现有守则如下
$scope.gridOptions = {
columnDefs: [],
enableFilter: true,
rowData: [],
rowSelection: 'multiple',
rowDeselection: true
};
$scope.customColumns = [];
Getdetails();
function Getdetails()
{
masterdataFactory.Getdetails()
.success(function (Student) {
f (Student.length != 0) {
for(var i=0;i<Student.length;i++) {
$scope.customColumns.push(
{
headerName: Student[i].Name,
field: "Mark",
headerClass: 'grid-halign-left'
}
);
};
$scope.gridOptions.columnDefs = $scope.customColumns;
$scope.gridOptions.rowData = Student;
$scope.gridOptions.api.setColumnDefs();
}
})
.error(function (error) {
$scope.status = 'Unable to load data: ' + error.message;
});
}
Run Code Online (Sandbox Code Playgroud)
现有产出在现有产出下方给出
如何从现有输出到达我的预期输出
首先安排json数据
[{Date:'12-12-2015',ammu:20,appu:24,anu:27},{Date:'13-12-2016' ammu:23,anu:20}]
Run Code Online (Sandbox Code Playgroud)
为此,我正在使用以下代码
function generateChartData() {
var chartData = [],
categories = {};
debugger;
for ( var i = 0; i <Student.length; i++ ) {
var newdate = Student[ i ].Date;
var Name=Student[ i ].Name;
var Mark=Student[ i ].Mark;
// add new data point
if ( categories[ newdate ] === undefined ) {
categories[ newdate ] = {
DATE: newdate
};
chartData.push( categories[ newdate ] );
}
// add value to existing data point
categories[ newdate ][ Name] = Mark;
}
return chartData;
}
Run Code Online (Sandbox Code Playgroud)
网格选项如下:
$scope.gridOptions = {
columnDefs: coldef(),
enableFilter: true,
rowData: [],
rowSelection: 'multiple',
rowDeselection: true,
enableColResize: true,
}
};
$scope.gridOptions.columnDefs = $scope.customColumns;
$scope.gridOptions.rowData =generateChartData();
$scope.gridOptions.rowData = generateChartData();
}
Run Code Online (Sandbox Code Playgroud)
列定义是动态的,如下所示
function coldef()
{
for(var i=0;i<headers.length;i++) {
debugger;
$scope.customColumns.push(
{
headerName: headers[i],
field:headers[i],
headerClass: 'grid-halign-left',
width:180,
filter: 'set',
});
} }
Run Code Online (Sandbox Code Playgroud)
在此标头中是一个数组。该数组包含不同的学生姓名
var headers=new Array();
headers[0]="DATE";
var Names= Student.map(function (item) { return item.Name});
Names= Names.filter(function (v, i) { return Names.indexOf(v) == i; });
for(var i=1;i<=Names.length;i++)
{
headers[i]=Names[i-1];
}
Run Code Online (Sandbox Code Playgroud)
我认为您的输入数据(学生)的数据可能是罪魁祸首,因为括号似乎奇怪地配对(复制您的数据,但格式化为更易于阅读):
[
{Date:'12-12-2015',Name:'ammu',mark:20},
Date:'12-12-2015',Name:'appu',mark:24},
Date:'12-12-2015',Name:'anu',mark:27},
Date:'13-12-2016',Name:'ammu',mark:23},
{Date:'13-12-2015',Name:'anu',mark:20}
]
Run Code Online (Sandbox Code Playgroud)
第二、三、四行没有开头{。
| 归档时间: |
|
| 查看次数: |
13830 次 |
| 最近记录: |