Я использую эти данные:
data = {"domains": {}}
data["domains"]["www.somedomain.com"] = {"status": "Editing"}
data["domains"]["www.otherdomain.com"] = {"status": "Disabled"}
Эта функция генерации таблицы:
def generate_table(dataframe, max_rows=10):
rows = []
header = [html.Tr(children=[
html.Th("Domain"),
html.Th("Status"),
], id='header')]
for domain,info in data["domains"].items():
status = "Unregistered"
if "status" in info:
status = info["status"]
rows.append(
html.Tr(children=[
html.Td( html.Strong(domain,style={'padding': pad})),
html.Td( dcc.RadioItems(
options=[
{'label': 'Unregistered', 'value': 'Unregistered'},
{'label': 'Registered', 'value': 'Approval'},
{'label': 'Editing', 'value': 'Editing'},
{'label': 'Edited', 'value': 'Edited'},
{'label': 'Disabled', 'value': 'Disabled'}
], value=status, labelStyle = { 'display': 'inline-block', 'padding': pad}, style={'display': 'inline', 'width': '10%', 'padding': pad})),
]))
table = html.Table(header + rows, id="table")
return table
И эта раскладка:
app.layout = html.Div([
html.Div(children=[
generate_table(data)
],style={'columnCount': 1}),
html.Div(id='mydiv')
], style={'margin': '30px', 'columnCount': 1})
Я пытаюсь чтобы сделать так, что выбор радиосвязи в строке обновляет этот элемент status
в данных. Тем не менее, я могу думать только о том, чтобы сделать это с помощью обратного вызова с вводом «таблица», и вручную проходить через каждую строку и извлекать все данные. Это кажется очень неуклюжим, и я хочу посмотреть, есть ли лучший способ сделать это?
Я предполагаю, что у меня не может быть отдельных обратных вызовов для каждой строки?