我目前有一个相当大的Grid,并且已成功使用RowExpander插件在某些行上显示补充信息。我的问题是,并非所有行都包含上述补充信息,并且我不希望RowExpander处于 Activity 状态,也不希望在特定数据存储的条目为空的情况下不显示“+”图标。我尝试在RowExpander对象上使用常规的“renderer”属性,但是它不起作用。

因此,基本上,只有在某个数据存储区的字段==“”时,如何显示并激活RowExpander的图标并双击?

提前致谢! =)

编辑:我找到了一个解决方案

正如e-zinc所说,解决方案的一部分(至少对我而言)是提供一个自定义渲染器,该渲染器将检查我的条件字段。这是我的RowExpander:

this.rowExpander = new Ext.ux.grid.RowExpander({
    tpl: ...
    renderer: function(v, p, record) {
                if (record.get('listeRetourChaqueJour') != "") {
                    p.cellAttr = 'rowspan="2"';
                    return '<div class="x-grid3-row-expander"></div>';
                } else {
                    p.id = '';
                    return '&#160;';
                }
    },
    expandOnEnter: false,
    expandOnDblClick: false
});

现在,这里的窍门是,对于此特定的Grid,我选择不启用expandOnEnter和expanOnDblClick,因为有时不会渲染RowExpander。同样,将带有“+”图标的网格单元的CSS类是“x-grid3-td-expander”。这是因为CSS类自动设置为x-grid3-td- [id-of-column]。因此,通过仅在不渲染rowExpander时将id设置为”,就可以删除未渲染单元格的灰色背景。因此,没有双击,没有输入,没有图标,没有灰色背景。实际上,好像我的数据存储字段为空的列完全不涉及RowExpander(当我不希望使用RowExpander时)。

那对我有用。对于希望保留单元格ID或希望保持双击并输入事件正常运行的人,除了扩展类,我没有别的事情可做。希望这可以帮助其他人留在我之前的位置!

最佳答案

正如e-zinc所说,解决方案的一部分(至少对我而言)是提供一个自定义渲染器,该渲染器将检查我的条件字段。这是我的RowExpander:

this.rowExpander = new Ext.ux.grid.RowExpander({
    tpl: ...
    renderer: function(v, p, record) {
                if (record.get('listeRetourChaqueJour') != "") {
                    p.cellAttr = 'rowspan="2"';
                    return '<div class="x-grid3-row-expander"></div>';
                } else {
                    p.id = '';
                    return '&#160;';
                }
    },
    expandOnEnter: false,
    expandOnDblClick: false
});

现在,这里的窍门是,对于这个特定的Grid,我选择不专门允许expandOnEnter和expandOnDblClick,因为RowExpander有时将不呈现。同样,将带有“+”图标的网格单元的CSS类是“x-grid3-td-expander”。这是因为CSS类自动设置为x-grid3-td- [id-of-column]。因此,通过仅在不渲染rowExpander时将id设置为空字符串,我还删除了不会提供任何扩展功能的单元格的灰色背景。因此,没有双击,没有输入,没有图标,没有灰色背景。实际上,好像我的数据存储字段为空的列完全不涉及RowExpander(当我不希望使用RowExpander时)。

那对我有用。对于希望保留单元格ID或希望保持双击并输入事件正常工作的人,我认为除了扩展RowExpander类之外,别无他法。当然,也可以使用Ext.override(),但是重写会击中RowExpander的所有实例。

09-07 20:36