c# - 动态生成控件
问题描述
我有一个 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();
}
推荐阅读
- oracle - ORA-02049: 超时: 分布式事务等待锁定
- c# - 由于内容类型,ServiceBusTrigger 消息无法读取 BrokeredMessages
- jenkins - 如何使 Jenkins 构建仅针对特定测试失败?
- android - OnRecomputeFinished 不会被调用
- regex - 匹配逗号,不包括括号中的逗号 - 用于 Google 表格的 RE2
- apache-spark - 高效的pyspark join
- p5.js - 确定是否使用 blendMode() 设置点颜色?
- ios - 如果来自不同的框架,Xcode 快速查看文档不会显示
- git - 如何找出我的功能分支是从哪个共享分支分支出来的
- python-3.x - Py2app 应用程序未启动只是询问我是否要终止应用程序或打开控制台