Uncheck all checkboxes at once in a grid

Hey guys!

Basically I have a grid and I created a checkbox inside to check the products that I want to order. The problem is that when I finish the order or want to "refresh" the order I need to reset all the the comboboxs.

How can I do that?



@attribute [Authorize(Roles = "User, Compras, Admin")]

@page "/fazerpedidocompra/{Value}"


<AuthorizeView Roles="User, Compras, Admin">

    <Authorized>

            <div class="col-md-3">

                <select class="form-control col-6" @bind="currentCotacao.CotacaoId">

                    @foreach (var cotacao in cotacoes)

                    {

                        <option [email protected]>@cotacao.Titulo</option>

                    }

                </select>

            </div>

            <br />

            <button @onclick="() => GetNovosProdutos()">Mostrar produtos!</button>

            <br />

            <div class="mainCard">

                <div class="col-md-6">

                    <br />

                    <p style="color:purple">Titulo</p>

                    <p>@currentCotacao.Titulo</p>

                    <p style="color:purple">Notas</p>

                    <p>@currentCotacao.Notas</p>

                    <p style="color:purple">Data</p>

                    <p>@currentCotacao.DataCotacao.ToShortDateString()</p>

                    <p style="color:purple">Fornecedor</p>

                    <p>@fornecedor</p>

                    <p style="color:purple">Preço</p>

                    <p>@currentCotacao.Preco</p>

                </div>

                <div class="col-md-6">

                    <SfGrid DataSource="@produtosDaCotacao" AllowPaging="true" AllowSorting="true" AllowFiltering="true">

                        <GridPageSettings PageSize="15">

                        </GridPageSettings>

                        <GridColumns>

                            <GridForeignColumn Field=@nameof(ProdutoDaCotacao.ProdutoId)

                                           TextAlign="TextAlign.Center"

                                           HeaderText="Nome"

                                           ForeignKeyValue="Nome"

                                           ForeignDataSource="@produtos"

                                           Width="100">

                            </GridForeignColumn>

                            <GridColumn Field=@nameof(ProdutoDaCotacao.Quantidade)

                                    HeaderText="Quantidade"

                                    TextAlign="TextAlign.Center"

                                    Width="100">

                            </GridColumn>

                            <GridColumn Field=@nameof(ProdutoDaCotacao.Preco)

                                    HeaderText="Preço"

                                    TextAlign="TextAlign.Center"

                                    Width="100">

                            </GridColumn>

                            <GridColumn HeaderText="Cotações"

                                Width="100">

                                <Template Context="templateContext">

                                    @{

                                        var value = (templateContext as ProdutoDaCotacao);


                                        <input type="checkbox" @onchange="eventArgs => { AddProduto(value, eventArgs.Value); }">

                                     }

                                </Template>

                             </GridColumn>

                        </GridColumns>

                    </SfGrid>


                    <br />


                    <button @onclick="() => CreatePedidoDeCompra()">Criar pedido de compra!</button>


                </div>

            </div>

    </Authorized>

</AuthorizeView>


@code {

    [Parameter]

    public string? Value { get; set; }


    Utilizador currentUser = new Utilizador();

    Requisicao objRequisicao = new Requisicao();

    Cotacao currentCotacao = new Cotacao();

    PedidoOrdemCompra pedidoOrdemCompra = new PedidoOrdemCompra();

    ProdutoDoPedido newProdutoDoPedido = new ProdutoDoPedido();


    List<Cotacao> cotacoes = new List<Cotacao>();

    List<ProdutoDaCotacao> produtosDaCotacao = new List<ProdutoDaCotacao>();

    List<ProdutoDoPedido> produtosDoPedido = new List<ProdutoDoPedido>();

    List<Produto> produtos = new List<Produto>();


    string fornecedor = "";


    protected override async Task OnInitializedAsync()

    {

        objRequisicao = await Service.GetRequisicaoByIdAsync(int.Parse(Value));

        currentUser = await Service.GetUserByIdAsync(objRequisicao.UserId);

        cotacoes = await Service.GetCotacoesPorRequisicaoAsync(objRequisicao.RequisicaoId);


        currentCotacao = cotacoes.First();


        fornecedor = currentCotacao.Fornecedor.Nome;


        produtos = await Service.GetAllProdutosAsync();


        produtosDaCotacao = await Service.GetProdutoCotacaoAsync(currentCotacao.CotacaoId);

    }


    private async Task GetNovosProdutos()

    {

        int IdCotacao = currentCotacao.CotacaoId;


        currentCotacao = await Service.GetCotacaoByIdAsync(IdCotacao);


        fornecedor = currentCotacao.Fornecedor.Nome;


        produtosDaCotacao = await Service.GetProdutoCotacaoAsync(currentCotacao.CotacaoId);

    }


    private void AddProduto(ProdutoDaCotacao objProdutoDoPedido, object checkedValue)

    {

        if ((bool)checkedValue)

        {

            newProdutoDoPedido.PedidoId = 0;

            newProdutoDoPedido.ProdutoId = objProdutoDoPedido.ProdutoId;

            newProdutoDoPedido.Quantidade = objProdutoDoPedido.Quantidade;

            newProdutoDoPedido.Preco = objProdutoDoPedido.Preco;


            produtosDoPedido.Add(newProdutoDoPedido);


            newProdutoDoPedido = new ProdutoDoPedido();

        }

        else

        {

            newProdutoDoPedido.PedidoId = 0;

            newProdutoDoPedido.ProdutoId = objProdutoDoPedido.ProdutoId;

            newProdutoDoPedido.Quantidade = objProdutoDoPedido.Quantidade;

            newProdutoDoPedido.Preco = objProdutoDoPedido.Preco;


            produtosDoPedido.RemoveAll(item => item.ProdutoId == objProdutoDoPedido.ProdutoId);


            newProdutoDoPedido = new ProdutoDoPedido();

        }


    }


    private async Task CreatePedidoDeCompra()

    {

        decimal precoTotal = 0;


        DateTime now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);


        foreach (var produto in produtosDoPedido)

        {

            precoTotal += (produto.Preco * produto.Quantidade);

        }


        pedidoOrdemCompra.UserId = objRequisicao.UserId;

        pedidoOrdemCompra.FornecedorId = currentCotacao.FornecedorId;

        pedidoOrdemCompra.Titulo = objRequisicao.Titulo;

        pedidoOrdemCompra.Descricao = objRequisicao.Descricao;

        pedidoOrdemCompra.Notas = objRequisicao.Notas;

        pedidoOrdemCompra.DataPedido = now.Date;

        pedidoOrdemCompra.Preco = precoTotal;


        var result = await Service.CreatePedidoOrdemCompra(pedidoOrdemCompra);


        if(result != null)

        {

            foreach(var produto in produtosDoPedido)

            {

                newProdutoDoPedido.PedidoId = result.PedidoId;

                newProdutoDoPedido.ProdutoId = produto.ProdutoId;

                newProdutoDoPedido.Quantidade = produto.Quantidade;

                newProdutoDoPedido.Preco = produto.Preco;


                await Service.CreateProdutoDoPedido(newProdutoDoPedido);


                newProdutoDoPedido = new ProdutoDoPedido();


            }


            toastService.ShowSuccess("Pedido de Ordem de compra criado com sucesso! Aguarda aprovação!", "Sucesso!");


            pedidoOrdemCompra = new PedidoOrdemCompra();


            produtosDoPedido.Clear();


        }

        else

        {

            toastService.ShowError("Erro na criação do pedido! Por favor contacte o administrador!", "Erro!");

        }

    }

}



1 Reply

VN Vignesh Natarajan Syncfusion Team November 9, 2022 06:33 AM UTC

Hi Goncalo,


Greetings from Syncfusion support.


Query: “The problem is that when I finish the order or want to "refresh" the order I need to reset all the the comboboxs. How can I do that?”


We have analyzed your query and we suggest you toggle the checkbox state using the checked property input element. Refer to the below code example.


<button @onclick="Clicked">Clear Checkbox</button>

 

<SfGrid DataSource="@Employees">

    <GridColumns>

        <GridColumn HeaderText="Employee Image" TextAlign="TextAlign.Center" Width="120">

            <Template Context="templateContext">

                @{

                    var value = (templateContext as EmployeeData);

                    <input type="checkbox" checked="@boolvalue" @onchange="eventArgs => { AddProduto(value, eventArgs.Value); }">

                }

            </Template>

        </GridColumn>

. . . . . . . . ..

    </GridColumns>

</SfGrid>

 

@code {

    public List<EmployeeData> Employees { get; set; }

 

    public void Clicked()

    {

        boolvalue = !boolvalue;

    }

 

    public bool boolvalue { get; set; }


Kindly refer to the attached sample for your reference. Please get back to us if you have further queries.


Regards,

Vignesh Natarajan



Attachment: BlazorGrid_5c47d69f.zip

Loader.
Up arrow icon