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

Dash Datatable多输入Callback(下拉框+搜索框)无法同时生效问题

问题原因

你的代码中筛选逻辑存在错误:第一步完成环境筛选得到dff后,第二步文本搜索筛选是直接基于原始全量df执行的,覆盖了之前的环境筛选结果,所以两个筛选条件无法同时生效。

修正方案

将文本搜索的数据源替换为第一步环境筛选得到的dff,同时补充空搜索值兼容逻辑、空值匹配容错,修正后的回调函数代码如下:

@app.callback(
    Output('datatable-paging', 'data'),
    [
     Input('datatable-paging', 'page_current'),
     Input('datatable-paging', 'page_size'),
     Input('datatable-paging', 'sort_by'),
     Input('env-select', 'value'),
     Input('filter-input', 'value')
    ])
def update_table(page_current, page_size, sort_by, environment_input, filter_string):
    # 优先执行环境筛选
    dff = df[df.Environment==environment_input]
    # 搜索框有内容时,在环境筛选结果基础上做二次文本筛选
    if filter_string:
        dff = dff[dff.apply(lambda row: row.str.contains(filter_string, regex=False, na=False).any(), axis=1)] 
    # 排序逻辑保持不变
    if len(sort_by):
        dff = dff.sort_values(
            sort_by[0]['column_id'],
            ascending=sort_by[0]['direction'] == 'asc',
            inplace=False
        )
    return dff.iloc[
           page_current * page_size:(page_current + 1) * page_size
           ].to_dict('records')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:06:10