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 value=@cotacao.CotacaoId>@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!");
}
}
}
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