我有一个foreach循环,我需要创建一个按钮,允许用户获取特定位置的地址。问题是,当生成页面时,如果单击"任何"按钮,它们都会显示弹出窗口。
@foreach (var schedule in _schedules) {
<BSButton Id="popover1" onclick="onclick1">@schedule.Location.NickName</BSButton>
<BSPopover Target="popover1" IsOpen="@IsOpen1" Placement="Placement.Top">
<BSPopoverHeader>@schedule.Location.Name</BSPopoverHeader>
<BSPopoverBody>@schedule.Location.Address</BSPopoverBody>
</BSPopover>
}
同一页顶部的代码
@code {
bool IsOpen1 { get; set; }
void onclick1(MouseEventArgs e)
{
IsOpen1 = !IsOpen1;
StateHasChanged();
}
}
我很难弄清楚如何生成这种类型的控件。我知道问题是所有控件的onclick都是一样的。即使我在onclick=@popoverTextId";,如何在@code{}中动态创建代码
我会假设Schedule有一个Id。否则,即兴创作一些东西。
<BSButton @onclick="() => onclick1(schedule.Id)"> ... </BSButton>
.... IsOpen="@(schedule.Id == SelectedId)" ...
void onclick1(int scheduleId)
{
SelectedId = scheduleId;
//StateHasChanged();
}