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
相关产品推荐
相关产品推荐

