Reordenação e movimentação de colunas da grade

    O recurso Blazor Grid Column Moving no Ignite UI for Blazor permite uma reordenação de colunas rápida e fácil. Isso pode ser feito por meio da API Column Moving ou arrastando e soltando os cabeçalhos para outra posição por meio de gestos de mouse ou toque. No Blazor Grid, você pode habilitar o Column Moving para colunas fixadas e não fixadas e também para Multi-Column Headers.

    [!Note] Reordering between columns and column groups is allowed only when they are at the same level in the hierarchy and both are in the same group. Moving is allowed between columns/column-groups, if they are top level columns.

    [!Note] If a column header is templated and the Column Moving is enabled or the corresponding column is groupable, then the templated elements need to have the draggable attribute set to false!

    [!Note] If the pinned area exceeds its maximum allowed width (80% of the total IgbGrid width), a visual clue notifies the end user that the drop operation is forbidden and pinning is not possible. This means you won't be allowed to drop a column in the pinned area.

        public RenderFragment<IgbColumnTemplateContext> headerTemplate => (context) =>
        {
            return @<IgbIcon Collection="fas" IconName="fa-thumbtack" draggable="false" @onclick="() => onClick()"></IgbIcon>;
        };
    

    Blazor Grid Column Moving Overview Example

    Visão geral

    O recurso de movimentação de colunas é habilitado em um nível por grade, o que significa que o IgbGrid pode ter colunas móveis ou imóveis. Isso é feito por meio da entrada Moving do IgbGrid.

    <IgbGrid Moving=true></IgbGrid>
    

    API

    Além da funcionalidade de arrastar e soltar, o recurso Column Moving também fornece métodos de API para permitir mover uma coluna/reordenar colunas programaticamente:

    MoveColumn- Move uma coluna antes ou depois de outra coluna (um alvo). O primeiro parâmetro é a coluna a ser movida, e o segundo parâmetro é a coluna alvo. Também aceita um terceiro parâmetro opcional Position (representando um valor DropPosition), que determina se deve colocar a coluna antes ou depois da coluna alvo.

        public async void HandleClick()
        {
            IgbColumn Col1 = await this.grid.GetColumnByVisibleIndexAsync(0);
            IgbColumn Col2 = await this.grid.GetColumnByVisibleIndexAsync(1);
            this.Grid.MoveColumn(Col1,Col2, DropPosition.AfterDropTarget);
        }
    

    Move- Move uma coluna para um índice visível especificado. Se o parâmetro de índice passado for inválido (for negativo ou exceder o número de colunas), ou se a coluna não tiver permissão para mover para esse índice (se estiver dentro de outro grupo), nenhuma operação será realizada.

        public async void HandleClick()
        {
            IgbColumn Col1 = await this.grid.GetColumnByVisibleIndexAsync(0);
            this.Col1.Move(3);
        }
    

    Observe que ao usar o recurso de movimentação de colunas, o evento ColumnMovingEnd será emitido se a operação for bem-sucedida. Observe também que, em comparação com a funcionalidade de arrastar e soltar, usar o recurso de movimentação de colunas não requer definir a propriedade Moving como true.

    Eventos

    Há vários eventos relacionados à movimentação da coluna para fornecer um meio de tocar nas operações de arrastar e soltar das colunas. Estes são ColumnMovingStart, ColumnMoving e ColumnMovingEnd.

    Você pode assinar o evento ColumnMovingEnd do IgbGrid para implementar alguma lógica personalizada quando uma coluna é solta em uma nova posição. Por exemplo, você pode cancelar a remoção da coluna Category após a coluna Change On Year(%) no seguinte trecho de código.

        <IgbGrid ShowGroupArea="true" @ref='Grid' Width="100%" Height="100%"
                 AllowFiltering=true
                 FilterMode="FilterMode.ExcelStyleFilter"
                 AutoGenerate=true
                 Data=northwindEmployees
                 Moving="true"
                 ColumnMovingEndScript='onColumnMovingEnd'>
        </IgbGrid>
    
    igRegisterScript("onColumnMovingEnd", (event) => {
        if (event.detail.source.field === "Category" && event.detail.target.field === "Change On Year(%)") {
            event.detail.cancel = true;
        }
    }, false);
    

    Styling

    Além dos temas predefinidos, a grade pode ser ainda mais personalizada definindo algumas das propriedades CSS disponíveis.

    Caso você queira alterar algumas das cores, você precisa primeiro definir uma classe para a grade:

    <IgbGrid class="grid"></IgbGrid>
    

    Em seguida, defina as propriedades CSS relacionadas a esta classe:

    .grid {
        --ig-grid-ghost-header-text-color: #f4d45c;
        --ig-grid-ghost-header-background: #ad9d9d;
        --ig-grid-ghost-header-icon-color: #f4d45c;
    }
    

    Demo

    API References

    Additional Resources

    Nossa comunidade é ativa e sempre acolhedora para novas ideias.