我有一个foreach循环,我需要创建一个按钮,该按钮允许用户获取特定位置的地址。问题是生成页面时,如果单击ANY按钮,它们都会显示弹出窗口。
@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 {}
中动态创建代码答案 0 :(得分:1)
我将假设Schedule有一个ID。否则,请即兴创作。
<BSButton @onclick="() => onclick1(schedule.Id)"> ... </BSButton>
.... IsOpen="@(schedule.Id == SelectedId)" ...
void onclick1(int scheduleId)
{
SelectedId = scheduleId;
//StateHasChanged();
}