Example #1
0
        public async Task SetChecked(bool value)
        {
            if (!Column.HeaderCheckbox)
            {
                return;
            }
            var oldValue = _allChecked;

            _allChecked = value;
            var allItemsDisplayed = GridComponent.Grid.ItemsCount == GridComponent.Grid.OriginalItemsCount;

            if (allItemsDisplayed)
            {
                GridComponent.CheckboxesKeyed.AddParameter(Column.Name, new QueryDictionary <(CheckboxComponent <T>, bool)>());
                LastHeaderCheckedValue = value;
            }

            var args = new HeaderCheckboxEventArgs <T>
            {
                ColumnName  = Column.Name,
                Value       = value ? CheckboxValue.Checked : CheckboxValue.Unchecked,
                HeaderValue = value ? CheckboxValue.Checked : CheckboxValue.Unchecked,
            };

            if (_allChecked != oldValue)
            {
                await GridComponent.OnHeaderCheckboxChanged(args);
                await InvokeAsync(StateHasChanged);
            }
        }
Example #2
0
        private async Task RowCheckboxChanged(CheckboxEventArgs <T> e)
        {
            if (e.ColumnName != Column.Name || !Column.HeaderCheckbox)
            {
                return;
            }
            var oldValue = _allChecked;

            var checkedCount = GridComponent.CheckboxesKeyed.Get(Column.Name).Values.Count(r => r.Item2);

            if (checkedCount > 0 && checkedCount != GridComponent.Grid.Pager.OriginalItemsCount)
            {
                _allChecked = null;
            }
            else
            {
                _allChecked            = checkedCount == GridComponent.Grid.Pager.OriginalItemsCount;
                LastHeaderCheckedValue = _allChecked == true;
                GridComponent.CheckboxesKeyed.AddParameter(Column.Name, new QueryDictionary <(CheckboxComponent <T>, bool)>());
            }

            if (_allChecked != oldValue)
            {
                var args = new HeaderCheckboxEventArgs <T>
                {
                    ColumnName  = Column.Name,
                    Value       = _allChecked == true ? CheckboxValue.Checked : CheckboxValue.Unchecked,
                    HeaderValue = _allChecked == null ? CheckboxValue.Gray : (_allChecked == true ? CheckboxValue.Checked : CheckboxValue.Unchecked),
                    StringKey   = e.StringKey,
                };
                await GridComponent.OnHeaderCheckboxChanged(args);
                await InvokeAsync(StateHasChanged);
            }
        }