【问题标题】:MudTable WASM, populating state on page loadMudTable WASM,在页面加载时填充状态
【发布时间】:2021-12-25 23:31:05
【问题描述】:

在任何文档中都找不到这方面的代码示例。使用 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 中实现我想要的任何方式?

【问题讨论】:

    标签: blazor-webassembly mudblazor


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我已经调整了您的代码示例,其中有一些错误,并更新了链接。还没有机会使用服务器数据调用进行测试,也不包括从 url 添加排序,我很快得出结论是不可能的。
    【解决方案2】:

    我认为这应该可以解决问题。可悲的是,NavigateTo() looks broken

    @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();
        }
    }
    

    【讨论】:

    • 对不起,这不能回答问题!试试看,你应该会收到我提到的关于在组件之外调用 CurrentPage 的相同警告
    • 好吧,我想我这次成功了。 SetRowsPerPage() 工作正常,但就像我说的,NavigateTo() 坏了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多