Skip to main content
All docs
V26.1
  • GridCommandColumnHeaderTemplateContext.NewEnabled Property

    Returns whether the Add operation is available for an asynchronous data source.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.Grid.v26.1.dll

    NuGet Package: DevExpress.Blazor

    Declaration

    public bool NewEnabled { get; }

    Property Value

    Type Description
    Boolean

    true if the add operation is available; otherwise, false.

    Remarks

    A command column contains the predefined CRUD-related buttons (New, Edit, and Delete). You can define the column’s HeaderTemplate to implement a custom New element in the column header.

    The Add operation can be temporarily unavailable if you bind a Grid to an asynchronous data source (such as a Server Mode data source or GridDevExtremeDataSource). The NewEnabled context parameter returns false when the Add operation cannot be performed. Once this operation becomes available, this parameter returns true.

    In the template, use the NewEnabled parameter to specify the enabled or disabled state for a custom command element. In the same way, you can use the EditEnabled and DeleteEnabled parameters in the command column’s CellDisplayTemplate.

    @using Microsoft.EntityFrameworkCore
    @using DevExpress.Data.Linq
    @inject IDbContextFactory<NorthwindContext> NorthwindContextFactory
    @implements IDisposable
    
    <DxGrid Data="InstantFeedbackSource"
            EditModelSaving="OnEditModelSaving"
            DataItemDeleting="OnDataItemDeleting"
            KeyFieldName="OrderId"
            EditMode="GridEditMode.EditRow"> 
        <Columns>
            <DxGridCommandColumn Width="150px">
                <HeaderTemplate>
                    <DxButton Click="() => context.Grid.StartEditNewRowAsync()"
                              Enabled="context.NewEnabled" Text="Add" />
                </HeaderTemplate>
                <CellDisplayTemplate>
                    @{
                        <DxButton Click="() => context.Grid.StartEditDataItemAsync(context.DataItem)"
                                  Text="Edit" Enabled="context.EditEnabled"/>
                        <DxButton Click="() => context.Grid.ShowDataItemDeleteConfirmation(context.DataItem)"
                                  Text="Delete" Enabled="context.DeleteEnabled"/>
                    }
                </CellDisplayTemplate>
            </DxGridCommandColumn>
            <DxGridDataColumn FieldName="ShipName" />
            <DxGridDataColumn FieldName="ShipCountry" />
            <DxGridDataColumn FieldName="Freight"  />
            <DxGridDataColumn FieldName="OrderDate" />
        </Columns>
    </DxGrid>
    
    @code {
        EntityInstantFeedbackSource InstantFeedbackSource { get; set; }
        NorthwindContext Northwind { get; set; }
    
        protected override void OnInitialized() {
            Northwind = NorthwindContextFactory.CreateDbContext();
            InstantFeedbackSource = new EntityInstantFeedbackSource(e => {
                e.KeyExpression = "OrderId";
                e.QueryableSource = Northwind.Orders;
            });
        }
    
        async Task OnEditModelSaving(GridEditModelSavingEventArgs e) {
            var editModel = (Order)e.EditModel;
            var dataItem = e.IsNew ? new Order() : Northwind.Orders.Find(editModel.OrderId);
            if (dataItem != null) {
                dataItem.ShipName = editModel.ShipName;
                dataItem.ShipCountry = editModel.ShipCountry;
                dataItem.Freight = editModel.Freight;
                dataItem.OrderDate = editModel.OrderDate;
                if (e.IsNew)
                    await Northwind.AddAsync(dataItem);
                await Northwind.SaveChangesAsync();
            }
        }
    
        async Task OnDataItemDeleting(GridDataItemDeletingEventArgs e) {
            var orderId = (int)e.Grid.GetDataItemValue(e.DataItem, "OrderId");
            var dataItem = Northwind.Orders.Find(orderId);
            if (dataItem != null) {
                Northwind.Remove(dataItem);
                await Northwind.SaveChangesAsync();
            }
        }
    
        public void Dispose() {
            InstantFeedbackSource?.Dispose();
            Northwind?.Dispose();
        }
    }
    

    Tip

    For additional information on how to enable data editing, refer to the following topic: Editing and Validation in Blazor Grid.

    See Also