我有一个多选小部件,当用户在小部件中选择一个选项时,我希望数据表更新并使所选列可见。所以本质上当 TableColumn.field= multi_choice.value 我想改变 TableColumn.visible= True
filtered_table_data=df[["Li","Be"]]
filtered_table_source= ColumnDataSource(data=filtered_table_data)
filtered_table_cols=[]
filtered_table_cols.append(TableColumn(field='Li', title='Li', width=750, visible=False))
filtered_table_cols.append(TableColumn(field='Be', title='Be', width=750,visible=False))
filtered_table=DataTable(source=filtered_table_source, columns=filtered_table_cols)
multi_choice = MultiChoice(value=[], options=df.columns[2:-1].tolist(), title='Select elements:')
callback2 = CustomJS(args=dict(multi_choice=multi_choice, filtered_table=filtered_table), code="""
for (var i=0; i<filtered_table.columns.length; i++)
{
for (var j=0; j<multi_choice.value.length;j++)
{
if (filtered_table.columns[i].field==multi_choice.value[j])
{
filtered_table.columns[i].visible=True;
}
}
}
filtered_table.change.emit()
""")
multi_choice.js_on_change("value",callback2)
当我尝试运行上面的代码时,选择选项时没有任何反应,数据表仍为空
JS布尔类型区分大小写
filtered_table.columns[i].visible=True;
除此之外它看起来可行