首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单元格渲染后获取单元格的值

单元格渲染后获取单元格的值
EN

Stack Overflow用户
提问于 2018-02-26 19:42:41
回答 1查看 2.6K关注 0票数 2

我正在使用ag-grid来显示一些信息。

代码语言:javascript
运行
复制
            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接口获取单元格的值:(cell.node.data)

但这会返回原始节点。有没有办法,我可以得到格式化的行(html)后,单元格渲染器已应用于它。

EN

Stack Overflow用户

回答已采纳

发布于 2018-02-28 13:38:51

好吧,所以我找不到任何解决方案来从模板中获取内容。但是我能够使用其他不同的ag-grid APIs来实现这一点。我主要需要它来创建列的csv超链接。例如:如果单元格a是www.example.com/ cell _value的超链接,我希望它存在于csv和超链接中。

所以这是我的解决方案:

代码语言:javascript
运行
复制
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);
}

===============

代码语言:javascript
运行
复制
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;
}
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48987720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档