Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

A TD Quantidade Não Atualiza Sozinha

Segui os passos do vídeo, mas a TD que mostra a quantidade não está atualizando sozinha com os dados recebidos do servidor. Só atualiza o campo quando atualizo a página.

Segue meu código html e Jquery:

@model IList<CaelumEstoque.Models.Produto>

<table class="table table-hover">
    <thead>
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Quantidade</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @foreach (var produto in Model)
        {
            <tr>
                <td>@produto.Id</td>

                <!--Html.ActionLink(texto que será apresentado na página html, "página que vai ser direcionado ao ser clicado", new { id = valor que será passado para a página que foi redirecionada})-->
                <td>@Html.ActionLink(produto.Nome, "Visualiza", new { id = produto.Id })</td>
                <!--Html.RouteLink(produto.Nome, "VisualizaProduto", new { id = produto.Id })</td>-->
                <td>

                <td id="quantidade@(produto.Id)">
                    @produto.Quantidade
                </td>

                <td>
                    <a href="#" onclick="decrementa(@produto.Id)">Decrementar</a>
                </td>
            </tr>
        }
    </tbody>
</table>

<script type="text/javascript" src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">

    function decrementa(produtoId){
    //cria uma variável que recebe a url que será feita a requisição. Url.Action("Nome da Action", "controller que controla a Action")
    var url = "@Url.Action("DecrementaQtd", "Produto")";

    //informa que tipo de envio será feito (Get ou post), recebe como argumento a variável url que contém o caminho da url que vai tratar a requisição e o id do produto que será afetado
                                       //chama a função atualiza criada abaixo.
        $.post(url, { id: produtoId }, atualiza);
    }


    //cria uma função que atualiza o campo "produto.quantidade" da tabela
    function atualiza(resposta){

        //cria uma variável que recebe o valor do campo com id="quantidade" com o Id do produto e devolve a quantidade do produto que tem no servidor   
        $("#quantidade" + resposta.Id).html(reposta.Quantidade);
    }
</script>

Segue código do Controller:

public ActionResult DecrementaQtd(int id)
        {
            ProdutosDAO dao = new ProdutosDAO();
            Produto produto = dao.BuscaPorId(id);
            produto.Quantidade--;
            dao.Atualiza(produto);
            //return RedirectToAction("Index");

            //transforma o retorno em objeto javascript podendo ser manipulado por comandos javascript
            return Json(produto);
        }
2 respostas
solução!

Olá Diego,

parece que faltou um s na hora de chamar a variável resposta quando é chamado o método html no js

   $("#quantidade" + resposta.Id).html(reposta.Quantidade); // está reposta ao invés de resposta

Acho que estou ficando muito tempo olhando para a tela do computador, não estou conseguindo achar esses pequenos erros. kkkkk

Era isso mesmo Lucas. Obrigado!