0

在任何文档中都找不到此代码示例。使用 MudTable ServerData 功能,想要将表格状态(页面编号、页面大小、排序)存储到 url 中,因为它改变了我所做的:

NavigationManager.NavigateTo($"/list/MyEntity/?PageNo={state.Page}&PageSize={state.PageSize}&SortLabel={state.SortLabel}&SortDirection={(state.SortDirection == MudBlazor.SortDirection.Ascending ? "asc" : "desc")}&Filter={Filter}", false);
  

但是在加载页面时,我想将这些参数推送到 MudTable

            table.CurrentPage = PageNo;
            table.RowsPerPage = PageSize;
            
           await table.ReloadServerData();

但是我收到警告说我不能在组件之外使用“table.CurrentPage”。在当前版本的 MudTable 中实现我想要的任何方式?

4

2 回答 2

0

将值分配给代码中的组件参数不是 Blazor 方式。您需要做的就是像这样在 Razor 中设置它们:

<MudTable Items="@Elements" CurrentPage="PageNo" RowsPerPage="PageSize">
    ...
    <PagerContent>
        <MudTablePager />
    </PagerContent>
</MudTable>

这是一个现场演奏的小提琴。它表明在razor中设置这两个参数是有效的。https://try.mudblazor.com/snippet/QaQlvFvLmZkKlaWQ

于 2021-11-17T08:05:34.067 回答
-1

我认为这应该可以解决问题。可悲的是,NavigateTo() 看起来很糟糕

@inject NavigationManager NavigationManager

<MudTable
    @* ... *@
</MudTable>

@code
{
    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        // on first render, _table is null
        if (firstRender)
        {
            return;
        }

        var uri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
        var queryComponents = QueryHelpers.ParseQuery(uri.Query);
        queryComponents.TryGetValue("PageNo", out StringValues pageNo);
        queryComponents.TryGetValue("PageSize", out StringValues pageSize);

        int rowsPerPage = int.Parse(pageSize.First());
        int page = int.Parse(pageNo.First());

        _table.SetRowsPerPage(rowsPerPage);
        //_table.NavigateTo(page);    // this is broken

        await _table.ReloadServerData();
    }
}
于 2021-11-14T18:36:04.670 回答