Eu tenho o seguinte no meu Dashboard.razor
<FilteredEventsGrid Start="0"
ShowEndDate="true"
Filter="SmartQueries.Filter.Owner | SmartQueries.Filter.IncludeDisabled"
CanEditOwner="false"/>
<FilteredEventsGrid Start="0"
ShowEndDate="true"
Filter="SmartQueries.Filter.Pending | SmartQueries.Filter.Private"
CanEditOwner="false"/>
Existem alguns eventos que estão em ambas as grades. Ambas as grades permitem a edição de eventos nelas. Então, quando um evento em uma das grades é editado, como ele pode dizer à outra grade para reler seus dados? (Cada um lê seus dados internamente, não há Data
parâmetro.)
O melhor que encontrei é <FilteredEventsGrid>
um ValueChanged
EventCallback. E ambos têm um Refresh()
método. Quando o pai obtém o ValueChanged
evento, ele chama Refresh()
o outro componente.
Defina um serviço
GridsSync.cs
para gerenciar a sincronização se pudermos chamá-lo assim entre os componentesGridsSync.cs
Registre o serviço a ser usado com injeção de dependência
Programa.cs
Supondo que este seja o seu componente, o clique do botão é uma simulação do evento de edição
GridEdited
, você está então acionando um eventoOnEdit
que o outro componente também se inscreveu nele.Grade.razor
Ps:
Se sua lógica de releitura precisar ser executada no thread principal/ui, então isso deve ser feito dentro
InvokeAsync();
, caso contrário, você pode fazer isso fora e chamar StateHasChanged() para notificar o thread da interface do usuário para renderizar novamente.