[英]Get Cell value after cell rendering applied to it ag-grid
我正在使用ag-grid显示一些信息。
var grid_column_definitions = [
{
field: "id",
headerName: "ID",
cellRenderer: function (params) {
if (!params.data) return '';
return '<a ng-href="#/id/{{data.id}}">{{data.id}}</a>';
}
}
]
我知道我可以使用ag_grid api获取单元格的值:(cell.node.data)
但这返回了我的原始节点。 有没有一种方法可以将单元格渲染器应用于格式化行(html)之后。
好的,所以我找不到从模板获取内容的任何解决方案。 但是我能够使用其他不同的ag-grid API来实现这一目标。 我主要需要创建列的csv超链接。 例如。 如果单元格a是www.example.com/cell_value的超链接,我希望它在csv以及超链接中都存在。
所以这是我的解决方案:
scope.exportData = function(){ // function to export data, in case anyone need this.
var params = {};
var params.fileName = "test";
params.processCellCallback = function(cell){
return create_csv_link_based_on_column(cell);
}
scope.data.api.exportDataAsCsv(params);
}
===============
var create_csv_link_based_on_column(cell){
var cellRenderer = cell.api.getColumnDef(cell.column.colId).cellRenderer; // get the cell renderer function
if(cellRenderer){ // if the cell has cellRenderer functiond defined.
var cellTemplate = cellRenderer(cell.node); // eg. <a ng-href="#/sample/{{data.id}}">{{data.id}}</a>
if(cellTemplate){
if(cellTemplate.indexOf("href=") !== -1){ // if the template has hyperlink.
try{
var link = cellTemplate.split(/"/)[1]; // get the hyperlink. eg. #/sample/{{data.id}}
var angularVariable = link.substring(link.lastIndexOf("{")+1,link.indexOf("}")); // eg. data.id
var properties = angularVariable.split('.'); // eg. ["data", "id"];
var propertyValue = properties.reduce((obj, prop) => obj && obj[prop], cell.node); // eg. cell.node.data.id = 16
var finalLink = link.replace("{{"+angularVariable+"}}", propertyValue); // replace angular variable with the data
finalLink = base_url + finalLink;
var csv_link = finalLink ? '=HYPERLINK("'+finalLink+'", "'+cell.value+'")' : cell.value;
return csv_link;
}catch(err){ // unexpected case
return cell.value;
}
}
}
}
return cell.value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.