来自sql的数据以垂直格式存储,我想以横向格式显示它。
这是数据存储在sql server中的方式: -
我正在使用angularjs ui-grid
来显示数据http://ui-grid.info/docs/#/tutorial/101_intro。我使用ajax
从sql中提取此数据,因此会以JSON
格式转换。
var jqxhr = jq.ajax({
type: "POST",
url: "/Main/getData",
data: { catId: catId },
success: function (data) {
var dataObj = jQuery.parseJSON(data);
....
});
这就是我需要最终数据格式的方式。
$scope.myData = [
{
"EmployeeId": "1",
"OTHINC1": "200",
"OTHINC2": "100"
},
{
"EmployeeId": "2",
"OTHINC1": "300",
"OTHINC2": "100"
}
];
答案 0 :(得分:1)
以下是您可以实现的方法 - fiddle link(请参阅console.log)
var formattedData = [];
for(var i = 0; i < data.length; i++) {
var obj;
var matchedIndex = indexOfByProp(formattedData, data[i].EmployeeId, 'EmployeeId');
if(matchedIndex === -1) { //new employee
obj = {
"EmployeeId" : data[i].EmployeeId
};
obj[data[i].FieldName] = data[i].Value;//adding value as a property
formattedData.push(obj);
} else { //add the new property to obj
obj = formattedData[matchedIndex];
obj[data[i].FieldName] = data[i].Value;
}
}
console.log(formattedData);
function indexOfByProp(arr, val, prop) {
for(var i = 0; i < arr.length; i++) {
if(arr[i][prop] === val) {
return i;
}
}
return - 1;
}
答案 1 :(得分:0)
你可以试试这个:
var result=[];
var indexes = data.map(function (el) {
return el.EmployeeId;
});
indexes=$.unique(indexes);
indexes.filter(Create);
function Create(element) {
obj = {
"EmployeeId" :element
};
for(x in data){
if(data[x].EmployeeId == element){
obj[data[x].FieldName] = data[x].Value;//adding value as a property
}
}
result.push(obj);
}
console.log(result);