我如何从ExtJS TableStore中的表单元格中获得渲染值

How do I get the rendered value from a table cell in ExtJS TableStore

本文关键字:单元格 表单 ExtJS TableStore      更新时间:2023-09-26

我正在构建一个过滤函数,过滤表中的所有单元格。

要做到这一点,我遍历我的表存储并访问我的每个记录项字段,如下所示。

tablestore.each(function (rec, idx) {
    contains = false;
    for (field in rec.data) {
        var cellValueAsString = "" + rec.data[field]
    }
}

我的问题是:如何获得用户在HTML页面中看到的呈现值?

我有很多渲染器,例如一个日期渲染器和一个从状态号创建字符串的渲染器。

cellValueAsString在上述代码中只返回底层值,而不是显示值。是否有任何方式访问显示的值从tableStore和/或recc对象?

thhx !

每个Grid列都有一个名为renderer的属性,这是一个函数。你的任务就是得到这个函数。为此,您可以在某处构建一个数组(mapfieldname => renderer),并在您的网格和新位置或仅在您的新位置调用它。

请尝试一下

将itemclick侦听器添加到网格中,如下所示

listeners:{
            itemclick: this.getRowItem,
            scope:this
        }

向要从中检索显示值的列添加tdCls。像下面的

{ 
   text: 'Name',  
   dataIndex: 'name',
   renderer: function(value, metadata, record){
        return value+" hello";
        },
        tdCls:'name-render'
    }

你的函数getRowItems应该像下面的

getRowItem: function(gridPanel, record, item, index, e, eOpts){

   var tdItem= item.getElementsByClassName('name-render');
   var actualTextDisplayed = tdItem.firstChild.innerHTML;
   return actualTextDisplayed ;
}