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

如何在Mud Blazor中按页码从服务器获取指定数据

MudBlazor Table 实现服务端分页(点击页码触发API获取数据)

要实现点击页码时从API加载对应页数据,核心是利用MudTable内置的服务端分页回调机制,无需手动给页码绑定点击事件,框架会自动处理页码切换时的逻辑触发。具体实现步骤如下:

1. 组件核心配置

给MudTable设置关键属性,开启服务端模式:

  • ServerData:绑定数据加载回调方法,页码切换、排序、过滤时都会自动触发该方法
  • TotalItems:设置总数据量,用于渲染正确的分页页码数
  • PageSize:定义每页显示的数据条数(比如你示例中的50条)
<MudTable T="YourDataModel" 
          ServerData="@LoadServerData" 
          TotalItems="@totalItems" 
          PageSize="50" 
          Hover="true">
    <HeaderContent>
        <MudTh>字段1</MudTh>
        <MudTh>字段2</MudTh>
        <!-- 根据你的数据模型添加其他表头 -->
    </HeaderContent>
    <RowTemplate>
        <MudTd>@context.Field1</MudTd>
        <MudTd>@context.Field2</MudTd>
        <!-- 根据你的数据模型添加其他列内容 -->
    </RowTemplate>
</MudTable>

2. 后端逻辑实现

在组件的C#代码中实现数据加载回调方法,处理API调用逻辑:

private int totalItems;
private readonly HttpClient _httpClient;

// 构造函数注入HttpClient
public YourComponent(HttpClient httpClient)
{
    _httpClient = httpClient;
}

// 服务端数据加载回调,点击页码时自动触发
private async Task<TableData<YourDataModel>> LoadServerData(TableState state)
{
    // 计算当前页的起始/结束索引(TableState.Page从0开始计数)
    var startIndex = state.Page * state.PageSize;
    var endIndex = startIndex + state.PageSize;

    // 调用后端API,传递分页、排序参数
    var apiResponse = await _httpClient.GetFromJsonAsync<ApiPageResponse>(
        $"your-api-url?start={startIndex}&end={endIndex}&sortField={state.SortLabel}&sortDir={state.SortDirection}");

    if (apiResponse == null)
    {
        return new TableData<YourDataModel> { Items = new List<YourDataModel>(), TotalItems = 0 };
    }

    // 更新总数据量,用于分页器渲染
    totalItems = apiResponse.TotalCount;
    // 返回当前页数据和总条数
    return new TableData<YourDataModel> 
    { 
        Items = apiResponse.CurrentPageData, 
        TotalItems = totalItems 
    };
}

// 自定义数据模型(根据你的业务定义)
public class YourDataModel
{
    public string Field1 { get; set; }
    public string Field2 { get; set; }
    // 其他业务字段
}

// API返回的分页响应模型
public class ApiPageResponse
{
    public List<YourDataModel> CurrentPageData { get; set; }
    public int TotalCount { get; set; }
}

3. 关键说明

  • TableState参数包含当前页码、每页条数、排序字段、排序方向等信息,可直接传递给API做对应的数据筛选处理
  • 点击页码时,MudTable会自动调用LoadServerData方法,无需手动绑定页码点击事件
  • 后端API需要返回当前页的数据列表和总数据量,确保分页器能正确渲染页码范围,表格能展示对应数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:26:06