diff --git a/blazorbootstrap/Components/Grid/Grid.razor.cs b/blazorbootstrap/Components/Grid/Grid.razor.cs index 2a90de27b..50fd95a4f 100644 --- a/blazorbootstrap/Components/Grid/Grid.razor.cs +++ b/blazorbootstrap/Components/Grid/Grid.razor.cs @@ -186,10 +186,8 @@ internal async Task RefreshDataAsync(bool firstRender = false, CancellationToken if (AllowSelection) { - PrepareCheckboxIds(); - - if (!firstRender) - await RefreshSelectionAsync(); + PrepareCheckboxIds(); + await RefreshSelectionAsync(); } requestInProgress = false; @@ -383,6 +381,7 @@ private async Task OnHeaderCheckboxChanged(ChangeEventArgs args) allItemsSelected = bool.TryParse(args?.Value?.ToString(), out var checkboxState) && checkboxState; selectedItems = allItemsSelected ? new HashSet(items!) : new HashSet(); SelectedItemsCount = selectedItems.Count; + SetSelected = selectedItems; await CheckOrUnCheckAll(); if (SelectedItemsChanged.HasDelegate) @@ -456,8 +455,8 @@ private void PrepareCheckboxIds() private async Task RefreshSelectionAsync() { selectedItems = (items?.Count ?? 0) == 0 - ? new HashSet() - : selectedItems?.Intersect(items!).ToHashSet() ?? new HashSet(); + ? new HashSet() + : selectedItems?.Intersect(items!).ToHashSet() ?? new HashSet(); SelectedItemsCount = selectedItems.Count; allItemsSelected = SelectedItemsCount > 0 && items!.Count == SelectedItemsCount; @@ -584,6 +583,19 @@ private void SetFilters(IEnumerable filterItems) [Parameter] public bool AllowRowClick { get; set; } + /// + /// Gets or sets the grid set selection. + /// + /// + /// Default value is false. + /// + [Parameter] + public HashSet SetSelected + { + get => selectedItems; + set => selectedItems = value; + } + /// /// Gets or sets the grid selection. ///