twitter-bootstrap - 如何在悬停时突出显示网格行并在 Bootstrap 中单击时将其选中?
问题描述
我正在将数据加载到 Blazor 中具有 3 列的网格。对于网格结构,我使用了 Bootstrap 行和列。如果我需要在悬停时突出显示行并使用 onClick 事件保持选中行,那么实现它的最佳方法是什么?
下面是我如何填充数据。
<div class="container-fluid">
<div class="row">
<div class="col">User Name</div>
<div class="col">First Name</div>
<div class="col">Last Name</div>
</div>
@foreach (var user in users)
{
<div class="row">
<div class="col">@user.UserName</div>
<div class="col">@user.FirstName</div>
<div class="col">@user.LastName</div>
</div>
}
</div>
谢谢。
解决方案
您需要保持行选择状态。这是包装任何行类型的通用视图模型:
public class RowState<TItem>
{
public RowState(TItem item) => Item = item;
public TItem Item { get; set; }
public bool IsSelected { get; set; }
}
然后对选定和悬停使用样式类:
.hover-row:hover {
background-color: #0000ff33;
}
.selected-row {
background-color: #0000ff77;
}
UserRow.razor
我使用带有视图模型的 a[Parameter]
将行分隔成自己的组件RowState<User>
。
这简化了处理单击事件的逻辑和 css 类突出显示该行的逻辑。
UserRow.razor
<div class="row hover-row @CssClass" @onclick="RowClicked" >
<div class="col">@User.UserName</div>
<div class="col">@User.FirstName</div>
<div class="col">@User.LastName</div>
</div>
@code {
[Parameter]
public RowState<User> UserRowState { get; set; }
private void RowClicked() => UserRowState.IsSelected = !UserRowState.IsSelected;
private User User => UserRowState.Item;
private bool IsSelected => UserRowState.IsSelected;
private string CssClass => IsSelected ? "selected-row" : "";
}
重构您的原始代码:
<div class="container-fluid">
<div class="row">
<div class="col">User Name</div>
<div class="col">First Name</div>
<div class="col">Last Name</div>
</div>
@foreach (var user in UserRows)
{
<UserRow UserRowState=user />
}
</div>
@code {
IEnumerable<RowState<User>> UserRows = User.DemoData
.Select(user => new RowState<User>(user))
.ToList();
}
这是一个有效的REPL
推荐阅读
- css - 在角度材料的垂直选项卡列表中添加选项卡按钮
- sql-server - 如何在 sql server 2017 的 django 查询集中支持 STRING_AGG
- wordpress - 过滤类别和 Postformat
- algorithm - 在数组末尾添加新数据点不是一个坏主意吗?
- android - 因 JVM 堆空间耗尽而导致守护进程到期?
- java - 如何从列表中保存许多类似的信息?(编码问题)
- typescript - 单击带有表格单元格的跨度不起作用-量角器/打字稿
- python - “进口烧瓶”正在工作,但“从烧瓶进口烧瓶”不是?
- php - 使用 PHP 解析 JSON 数组
- symfony4 - 可以列出详细信息的奏鸣曲管理仪表板块