You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blazor Server中实现下拉列表过滤数据行?

在Blazor Server中实现下拉列表过滤表格的步骤

1. 定义组件变量

在组件的@code块中添加必要变量,用于存储选中状态和过滤后的数据:

@code {
    // 原始用户数据集(替换为你的实际数据来源)
    private List<User> Users { get; set; } = new List<User>();

    // 存储选中的用户ID,null表示未选择任何用户
    private int? SelectedUserId { get; set; }

    // 动态计算过滤后的用户列表
    private IEnumerable<User> FilteredUsers => SelectedUserId.HasValue
        ? Users.Where(u => u.UserID == SelectedUserId.Value)
        : Users;

    // 组件初始化时加载数据(示例逻辑)
    protected override void OnInitialized()
    {
        // 这里替换为你的数据加载逻辑,比如从服务获取
        Users = new List<User>
        {
            new User { UserID = 1, UserName = "jdoe", FirstName = "John", LastName = "Doe" },
            new User { UserID = 2, UserName = "asmith", FirstName = "Alice", LastName = "Smith" }
        };
    }

    // 你的User模型类(根据实际结构调整)
    public class User
    {
        public int UserID { get; set; }
        public string UserName { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

2. 修改下拉列表代码

将原生<select>改为Blazor双向绑定形式,修正语法错误:

<span>User: </span>
<select @bind-Value="SelectedUserId" class="form-control"> 
    <option value="">--- Select User---</option>
    @foreach (var user in Users)
    {
        <option value="@user.UserID">@user.UserName</option>
    }
</select>
  • 用@bind-Value实现选中值与SelectedUserId的双向绑定,选项变化时自动更新变量
  • 默认选项设置空value,对应未选择状态的null值
  • 修正原代码中userin的语法错误,改为user in

3. 修改表格渲染逻辑

让表格遍历过滤后的用户列表:

<table class="table table-striped">
    <thead>
        <tr>
            <th>User ID</th>
            <th>User Name</th>
            <th>First Name</th>
            <th>Last Name</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var user in FilteredUsers)
        {
            <tr>
                <td>@user.UserID</td>
                <td>@user.UserName</td>
                <td>@user.FirstName</td>
                <td>@user.LastName</td>
            </tr>
        }
    </tbody>
</table>

实现逻辑

  • 用户选择下拉选项时,SelectedUserId自动更新
  • FilteredUsers作为动态计算属性,根据选中状态过滤数据:
    • 未选择用户时返回全部数据
    • 选中特定用户时,仅返回对应用户的行数据

内容的提问来源于stack exchange,提问作者BigSargeNCharge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:43:00