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

如何实现KendoReact Grid列菜单复选框过滤器显示与过滤值分离?

解决方案:实现显示名称与过滤值分离的本地化过滤

完全可以实现显示名称(本地化文本)与过滤值(数据源原始英文值)分离,确保切换语言后过滤功能正常工作,具体实现方式如下:

  • 配置自定义列过滤组件
    在KendoReact Grid的状态列定义中,使用下拉过滤组件并指定显示字段与值字段的映射。给过滤组件提供包含本地化显示文本和原始英文值的选项列表,让过滤逻辑基于原始值执行,而界面显示本地化文本。

    示例代码:

    import { Grid, GridColumn } from '@progress/kendo-react-grid';
    import { DropDownListFilter } from '@progress/kendo-react-grid';
    
    // 根据当前语言生成的本地化状态选项
    const localizedStatusOptions = [
      { text: "已完成", value: "Completed" },
      { text: "进行中", value: "InProgress" },
      { text: "未开始", value: "NotStarted" }
    ];
    
    <Grid data={yourEnglishDataSource}>
      <GridColumn
        field="status"
        title="状态" // 本地化的列标题
        filter="dropdown"
        // 自定义过滤单元格
        filterCell={props => (
          <DropDownListFilter
            {...props}
            data={localizedStatusOptions}
            dataItemTextField="text" // 界面显示的本地化文本字段
            dataItemValueField="value" // 过滤时使用的原始英文值字段
          />
        )}
        // 自定义单元格渲染,显示本地化文本
        cell={props => {
          const matchedOption = localizedStatusOptions.find(opt => opt.value === props.dataItem.status);
          return <td>{matchedOption ? matchedOption.text : props.dataItem.status}</td>;
        }}
      />
      {/* 其他列配置 */}
    </Grid>
    
  • 核心逻辑说明
    过滤组件通过dataItemValueField获取原始英文值,与数据源中的status字段直接匹配,因此无论界面显示哪种语言的文本,过滤操作都会基于数据源的原始值执行,保证结果准确。

  • 多语言切换适配
    当切换语言时,只需更新localizedStatusOptions中的text字段内容,Grid会自动重新渲染过滤菜单和单元格显示文本,过滤逻辑无需修改,始终保持与数据源的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:34:57