Blazor Operações de Dados Remotos de Grade Hierárquica
Por padrão, o usa IgbHierarchicalGrid
sua própria lógica para executar operações de dados.
Você pode executar essas tarefas remotamente e alimentar os dados resultantes para o IgbHierarchicalGrid
aproveitando certas entradas e eventos, que são expostos pelo IgbHierarchicalGrid
.
Remote Paging
Como Blazor Server já é uma instância remota, ao contrário das demos nas outras plataformas, não precisamos definir outra instância remota para os dados, pois os dados já são remotos. Para fazer a paginação remota, só precisamos definir alguns métodos na classe de dados
public Task<List<NwindDataItem>> GetData(int index, int perPage)
{
var itemsToReturn = items.Skip(index).Take(perPage).ToList();
return Task.FromResult(itemsToReturn);
}
public Task<int> GetDataLength()
{
return Task.FromResult(items.Count);
}
Após declarar o serviço, precisamos criar um componente, que será responsável pela construção e assinatura de IgbHierarchicalGrid
dados.
Primeiro, devemos carregar alguns dados na grade. É melhor fazer isso depois que a grade for renderizada para evitar problemas de tempo.
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await Paginate(0, PerPage);
totalRecordsCount = await NwindDataService.GetDataLength();
StateHasChanged();
}
}
Depois disso, só precisamos vincular os eventos de paginação aos nossos métodos personalizados e a paginação remota é definida:
<IgbPaginator @ref="pager" PageChange="OnPageChange" PerPageChange="OnPerPageChange" TotalRecords="totalRecordsCount"></IgbPaginator>
....
@code {
private async void OnPerPageChange(IgbNumberEventArgs e)
{
PerPage = e.Detail;
await Paginate(0, e.Detail);
}
private async void OnPageChange(IgbNumberEventArgs e)
{
await Paginate(e.Detail, PerPage);
}
...
private async Task Paginate(double page, double perPage)
{
this.page = page;
double skip = this.page * PerPage;
double top = PerPage;
try
{
data = await NwindDataService.GetData(Convert.ToInt32(skip), Convert.ToInt32(perPage));
isLoading = false;
UpdateUI();
}
catch (Exception ex)
{
Console.Error.WriteLine($"Error fetching data: {ex.Message}");
}
}
}
Para mais referências, verifique a demonstração completa abaixo:
Grid Remote Paging Demo
Known Issues and Limitations
- Quando a grade não tiver nenhuma
PrimaryKey
configuração e os cenários de dados remotos estiverem habilitados (ao paginar, classificar, filtrar, rolar solicitações de gatilho para um servidor remoto para recuperar os dados a serem exibidos na grade), uma linha perderá o seguinte estado após a conclusão de uma solicitação de dados:
- Seleção de linha
- Expandir/recolher linha
- Edição de linha
- Fixação de linha
API References
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.