none
Json + Jquery + Ajax + Net RRS feed

  • Pergunta

  • Galera desculpa estar postando muitos posts, mas é que não estou conseguindo fazer o que preciso. Vou tentar explicar e postar todo meu código aqui, quem puder me ajudar eu agradeço.

    1 - tenho um grid com as informações abaixo, segue minha view

    @using WebProvider.BMW_Incentivo.Domain.Models
    @model WebProvider.BMW_Incentivo.Admin.Models.GerenciaPassagemModel
    
    @{
        ViewBag.Title = "Gerenciamento de Passagens";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/css/pageDataTables.css")" media="screen" />
    <link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/css/tableDataTables.css")" media="screen" />
    <script src="@Url.Content("~/Content/js/jquery.dataTables.js")" type="text/javascript"></script>
    <script src="~/Content/js/pages/GerenciadorPassagem.js"></script>
    
    @using (Html.BeginForm("Index", "GerenciaPassagem", FormMethod.Post))
    {
        <fieldset id="passagem">
    
            <div style="float: left;">
                <label>Mês:</label>
    
                <select id="ListaPeriodo" name="ListaPeriodo" onchange="listaPassagens();">
                    @foreach (var item in Model.ListaPeriodo)
                    {
                        <option id="id" value="@item.Id">@item.DescricaoMes</option>
                    }
                </select>
    
                <span class="error">* Campo Obrigatório</span>
    
            </div>
            <div style="float: right;">
                <label>Ano:</label>
    
                <select id="ListaAno" name="ListaAno">
                    @*@foreach (var item in Model.Ano)
                        {*@
                    <option id="id" value="@Model.Ano">@Model.Ano</option>
                    @*}*@
                </select>
    
                <span class="error">* Campo Obrigatório</span>
    
            </div>
            <table border="2" class="data display datatable" id="tabFiltra">
    
                <thead>
                    <tr>
                        <th><span>Acao</span></th>
                        <th><span>Participante - CPF</span></th>
                        <th><span>Passagem</span></th>
                        <th><span>Status</span></th>
                    </tr>
                </thead>
    
                <tbody>
                    @foreach (Passagem participante in Model.ListaParticipante)
                    {
                        <tr>
                            <td>
                                <input type="checkbox" id="@participante.Acao" name="idsCredito" @(participante.Acao == true ? "checked = 'checked' readonly='readonly' " : string.Empty) />
                            </td>
                            <td>
                                @(participante.Passagens != null ? participante.Participante.NomeCompleto + " - " + participante.Participante.CPF : "")>
                            </td>
                            <td>
                                @(participante.Passagens.ToString() != "" ? participante.Passagens.ToString() : "")
                            </td>
                            <td>
                                @(participante.Acao == true ? "Aprovado" : "-")
                            </td>
                        </tr>
                    }
                </tbody>
    
            </table>
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
    
            <input type="button" value="Aprovar" onclick="Aprovar(); return false;" id="btAprovar" style="margin-left: 9px;" />
    
            <input type="button" value="Recusar" id="BtRecusar" style="margin-left: 9px;" />
        </fieldset>
    }
    
    @section Scripts {
        @Scripts.Render("~/bundles/knockout")
        @Scripts.Render("~/bundles/jqueryui")
    }
    


    Estou chamando meu .js para executar o ajax e contar os checkbox que tenho checados, segue o código:

    function drawTable() {
        dataTable = $('#tabFiltra').dataTable({
            "sPaginationType": "full_numbers",
            "bSearchable": false,
            "bDestroy": true,
            //"bRetrieve": true,
            "oLanguage": {
                "sProcessing": "Processando...",
                "sLengthMenu": "Mostrar _MENU_ registros",
                "sZeroRecords": "Não foram encontrados resultados",
                "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros",
                "sInfoEmpty": "Mostrando de 0 até 0 de 0 registros",
                "sInfoFiltered": "(filtrado de _MAX_ registros no total)",
                "sInfoPostFix": "",
                "sSearch": "Buscar:",
                "sUrl": "",
                "oPaginate": {
                    "sFirst": "«« Primeiro",
                    "sPrevious": "« Anterior",
                    "sNext": "Seguinte »",
                    "sLast": "Último »»"
                }
            }
        });
    }
    
    function RecuperarSelecionados() {
        var array = new Array();
    
        $(dataTable.fnGetNodes()).find(':checkbox').each(function () {
            $this = $(this);
            if ($this.is(":checked"))
                array.push($this.attr('id'));
        });
    
        return array;
    }
    
    function Aprovar() {
        $.ajax({
            url: baseURL + 'GerenciaPassagem/AprovarPassagem',
            data: JSON.stringify({ idsCredito: RecuperarSelecionados() }),
            dataType: 'json',
            type: "POST",
            contentType: "application/json;charset=utf-8",
            beforeSend: function () {
                $.blockUI({ message: '<img src="' + url + '/Content/ajax-loader.gif" alt="Aguardando..."/>' });
            },
            success: function (retorno) {
                if (retorno.ok) {
                    onSucess(retorno.mensagem);
                }
                else {
                    onError(retorno.mensagem);
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                onError('Ocorreu um erro ao processar sua solicitação.');
            },
            complete: function () {
                clear();
                $.unblockUI();
            }
        });
    }

    Agora segue minha controller:

    [HttpPost]
            public JsonResult AprovarPassagem(int[] idsCredito)
            {
                bool sucesso = true;
                string mensagem = "Aprovado com sucesso!";
    
                try
                {
    
    
                }
                catch (Exception ex)
                {
                    Trace.LogErro(ex);
                    sucesso = false;
                    mensagem = "Ocorreu um erro ao salvar o participante!";
                }
                return Json(new { ok = sucesso, mensagem = mensagem });
            }
    

    Ainda não tenho nada na controler, pq estou esperando o retorna do ajax.

    Bom vai a pergunta, preciso pegar os checkbox selecionados do determinado participante pq preciso fazer um update na base com essas informações. Como posso fazer isso?

    Desculpa por postar tudo isso, mas é que estou precisando muito e meu prazo já estourou, se alguem puder me ajudar eu agradeço

    Obrigado



    SirSmart

    quinta-feira, 10 de abril de 2014 19:51