You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExtJS如何为自定义网格列的筛选列表值添加对应图标?

可以给GridFilters的列表筛选选项添加对应图标

完全可以实现,只需要在自定义列的filter配置中扩展列表筛选器(ListFilter)的模板,让每个筛选选项渲染时带上对应图标即可,和单元格渲染逻辑保持一致。

实现步骤

在你的OrderStatusColumn定义中,把原来简单的filter: 'list'替换为完整的筛选器配置,通过itemTpl指定每个选项的渲染模板,嵌入和单元格相同的图标逻辑:

Ext.define('OrderStatusColumn', {
    extend: 'Ext.grid.column.Column',
    alias: 'widget.OrderStatusColumn',

    text: 'Status',
        
    // 扩展list filter的配置,添加自定义模板
    filter: {
        type: 'list',
        // 自定义选项渲染模板,根据value匹配对应图标
        itemTpl: `
            <tpl switch="value">
                <tpl case="'Draft'">
                    <i class="fa-regular fa-sticky-note x-font-awesome-family-regular color-main-base" style="font-size: 18px;margin-right:5px;"></i>
                <tpl default>
                    <i class="fa-regular fa-question-circle x-font-awesome-family-regular color-main-base" style="font-size: 18px;margin-right:5px;"></i>
                </tpl>
            </tpl>
            {text}
        `
    },
    
    renderer: function(value, metaData) {
        metaData.style = "text-align: left;";
        var columnInstance = metaData.column;
        var processValue = columnInstance.resolveLookupValue(columnInstance, value, metaData.record);
        var tooltipText = Ext.util.Format.htmlEncode(processValue);
        metaData.tdAttr = 'data-qtip="' + tooltipText + '"';
        var iconHtml = '';
        switch (value) {
            case 'Draft':
                iconHtml = '&lt;i class="fa-regular fa-sticky-note x-font-awesome-family-regular color-main-base" style="font-size: 18px;margin-right:5px;">&lt;/i&gt;'; 
                break;                   
            default:
                iconHtml = '&lt;i class="fa-regular fa-question-circle x-font-awesome-family-regular color-main-base" style="font-size: 18px;margin-right:5px;">&lt;/i&gt;';
                break;
        }
        return iconHtml + '&lt;span class="span-overflow-hide" style="display: inline;">' + processValue + '&lt;/span&gt;';
    }

});

关键说明

  • itemTpl是ExtJS列表筛选器用来渲染每个选项的模板,使用switch语法根据选项的value匹配对应的图标,和单元格渲染的逻辑完全对齐。
  • 如果你的筛选选项文本是通过resolveLookupValue处理后的显示文本,确保筛选器的options配置中已经包含正确的value和text(如果是自动从列数据获取选项,通常会自动对应)。
  • 模板中的图标样式类和单元格里的保持一致,确保视觉统一。

内容的提问来源于stack exchange,提问作者AnthonyDa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:24:53