Blazor Grid - Command Column

Command Column

The Smart.Grid built-in Command Column can be used to Edit, Delete or perform any other custom function on a row.

To create a command column, create a new instance of GridEditing() object and set the Visible property of the GridCommandColumn
Finally, attach the editing object to the Grid:

@inject WeatherForecastService ForecastService

<Grid Editing="@editing">
  <Columns>
    <Column DataField="Date" Label="Date"> </Column>
    <Column DataField="TemperatureC" Label="Temp. (C)"> </Column>
    <Column DataField="TemperatureF" Label="Temp. (F)"> </Column>
    <Column DataField="Summary" Label="Summary"> </Column>
  </Columns>
</Grid>

@code{
  GridEditing editing = new GridEditing()
  {
      Enabled = true,
      Action = GridEditingAction.None,
      Mode = GridEditingMode.Row,
      CommandColumn = new GridEditingCommandColumn() { Visible = true }
  };

  private WeatherForecast[] forecast;

  protected override async Task OnInitializedAsync()
  {
      forecast = await ForecastService.GetForecastAsync(DateTime.Now);
  }
}
Command column

Command Column Inline

The Command Column can be displayed inline, meaning that it only appears when the row is hovered.

GridEditing editing = new GridEditing()
{
    Enabled = true,
    Action = GridEditingAction.None,
    Mode = GridEditingMode.Row,
    CommandColumn = new GridEditingCommandColumn() { Visible = true, Inline = true}
};
Inline command column

Command Column Position

It is possible to change the position of the command column by using the Position property.

GridEditing editing = new GridEditing()
{
    Enabled = true,
    Action = GridEditingAction.None,
    Mode = GridEditingMode.Row,
    CommandColumn = new GridEditingCommandColumn() { Visible = true, Position = Position.Near}
};
Command column position set to near

Custom Command Column

You can also create a custom command column by using the DataSource property. In this example, we hide the Delete Column and create a new custom one:

GridEditing editing = new GridEditing()
{
    Enabled = true,
    Action = GridEditingAction.None,
    Mode = GridEditingMode.Row,
    CommandColumn = new GridEditingCommandColumn() 
    { 
        Visible = true, 
        Inline = false,
        DataSource = new GridEditingCommandColumnDataSource()
          {
              CommandColumnDelete = new GridCommand() { Visible = false },
              CommandColumnCustom = new GridCommand()
              {
                  Icon = "smart-icon-star",
                  Command = "notify",
                  Visible = true,
                  Label = "Notify Me"
              }
          } 
    }
};
Custom command column