private bool IsColumnInEditMode(PDColumn <TItem> column, TItem item) { // is editing current row? if (IsEditing && item == EditItem) { var editable = column.Editable; // override with dynamic config? var config = ColumnsConfig?.Find(x => x.Id == column.Id); return(config?.Editable ?? editable); } return(false); }
/// <summary> /// Adds the given column to the list of available columns. /// </summary> /// <param name="column">The PDColumn to be added.</param> public async Task AddColumnAsync(PDColumn <TItem> column) { try { Columns.Add(column); if (column.Id == SortCriteria?.Key) { column.SortDirection = SortCriteria.Direction; } StateHasChanged(); } catch (Exception ex) { await HandleExceptionAsync(ex).ConfigureAwait(false); } }
/// <summary> /// Sort the data by the specified column. /// </summary> /// <param name="column">The column to sort by.</param> /// <remarks>To disable sorting for any given column, set its Sortable property set to false.</remarks> protected async Task SortByAsync(PDColumn <TItem> column, SortDirection?direction = null) { if (column.Sortable && !string.IsNullOrWhiteSpace(column.Id)) { // if direction specified then sort as requested if (direction.HasValue) { column.SortDirection = direction.Value; } else { // if column already sorted then reverse direction if (column.Id == SortCriteria?.Key) { column.SortDirection = column.SortDirection == SortDirection.Ascending ? SortDirection.Descending : SortDirection.Ascending; } else { var previousCol = Columns.Find(x => x.Id == SortCriteria?.Key); if (previousCol != null) { previousCol.SortDirection = SortDirection.None; } column.SortDirection = SortDirection.Ascending; } } if (SortCriteria != null) { SortCriteria.Key = column.Id; SortCriteria.Direction = column.SortDirection; } await GetDataAsync().ConfigureAwait(true); await SortChanged.InvokeAsync(new SortCriteria { Key = column.Id, Direction = direction ?? column.SortDirection }).ConfigureAwait(true); } }
public void OnEditInput(PDColumn <TItem> column, object?value) { _editValues[column.Id] = value; }