Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何(正确)使用RowExpander在网格中渲染其他数据_Javascript_Extjs_Extjs4.1 - Fatal编程技术网

Javascript 如何(正确)使用RowExpander在网格中渲染其他数据

Javascript 如何(正确)使用RowExpander在网格中渲染其他数据,javascript,extjs,extjs4.1,Javascript,Extjs,Extjs4.1,我正在尝试在网格中呈现rowbody中的一些数据(使用RowExpander插件)。 我的问题是ol'rowBodyTpl对我来说不够,因为这些数据来自正在呈现的记录(hmmm…)中存储区上的记录 简单地说:网格中的每个记录都有一个存储(我们称之为项)。因此,我想呈现记录数据以及项记录的一些数据 这样做的最佳方式是什么 覆盖rowexpander插件的renderer功能,覆盖getAdditionalData,还是不覆盖 谢谢。我通常是这样做的: Ext.create('Ext.grid.Pa

我正在尝试在网格中呈现rowbody中的一些数据(使用RowExpander插件)。 我的问题是ol'
rowBodyTpl
对我来说不够,因为这些数据来自正在呈现的记录(hmmm…)中存储区上的记录

简单地说:网格中的每个记录都有一个存储(我们称之为)。因此,我想呈现记录数据以及记录的一些数据

这样做的最佳方式是什么

覆盖
rowexpander
插件的
renderer
功能,覆盖
getAdditionalData
,还是不覆盖


谢谢。

我通常是这样做的:

Ext.create('Ext.grid.Panel',{
border: true,
store: 'ds',
    columns: []
    plugins: [{
            ptype: 'rowexpander',
            rowBodyTpl : ['<p><b>Title:</b>{name}<br/><b>Description:</b> {description}<br/><b>Experiment Design:</b> {experimentdesign}</p>']
    }],
    renderTo: 
});
Ext.create('Ext.grid.Panel'{
边界:是的,
商店:“ds”,
列:[]
插件:[{
p类型:“行扩展器”,
rowBodyTpl:['标题:{name}
描述:{Description}
实验设计:{experimentdesign}

'] }], renderTo: });
我如何“解决”这个问题,它可能会帮助其他人:

我重写了rowexpander插件的getRowBodyFeatureData,因为此函数不仅接收要应用于模板的数据,而且还接收记录本身,所以我只是从记录中添加了额外的存储/数组


不确定这是不是最好的方式,但是嘿。。。至少它是有效的。

我知道这个问题已经有几年历史了,但我现在用一个技巧来处理这种情况。它利用了XTemplates允许的“逐字”块。通过使用
{%…%}
包装XTemplate,可以在XTemplate内执行任意代码。在这些代码块中,
设置为XTemplate本身。XTemplate有一个
owner
属性,在我们的例子中,该属性引用
RowExpander
插件本身,而插件本身又有一个
grid
属性来引用网格。这样,您就可以将任意数据添加到传递到
rowBodyTpl
的值中

Ext.create('Ext.grid.Panel', {
    ...
    injectRowBodyData: function(values) {
        values.MyInjectedContent = "Here's some extra data!";
    },
    plugins: [
        {
            ptype: 'rowexpander',
            rowBodyTpl: [
                '{% this.owner.grid.injectRowBodyData(value); %}',
                '<div>',
                    '<h1>{Title}</h1>',
                    '<p>{Content}</p>,
                    '<p>{MyInjectedContent}</p>',
                '</div>'
            ]
        }
    ]
});
Ext.create('Ext.grid.Panel'{
...
injectRowBodyData:函数(值){
values.MyInjectedContent=“这里有一些额外的数据!”;
},
插件:[
{
p类型:“行扩展器”,
rowBodyTpl:[
“{%this.owner.grid.injectRowBodyData(值);%}”,
'',
“{Title}”,
“{Content}

, “{MyInjectedContent}

”, '' ] } ] });

Hhoppelly Sencha将修复该插件,以便在将来提供处理此问题的方法。但就目前而言,这很有效。我用v4.2.1.883测试了这一点,但这应该适用于Ext4的任何早期版本。我能想到的唯一可能阻止它在将来工作的事情是XTemplate的
所有者
属性不再指向插件,或者插件的
网格
属性没有引用网格。

您也可以在
rowBodyTpl
中使用
if-else
语句:

检查“:”

“”,
"",
""
检查空字符串

"<tpl if='phone == \"\"'>",
"</tpl>"
“”,
""

此示例取自此处:

这与普通rowBodyTpl有何不同?
"<tpl if='phone == \"\"'>",
"</tpl>"