DataTable com listagem errada dos dados

Bom tarde,

A página que estou fazendo possui duas tabelas, porém uma tabela é aberta apenas na modal.

A primeira tabela está sem problemas quando não ouve algum click no botão corrigir, segue abaixo a tela.

importCities1.jpg

A segunda tabela abre na modal após o clique do botão corrigir. Segue abaixo a tabela da modal.

importCities2.jpg

O erro acontece quando abre a modal, a primeira tabela recebe a listagem que esta na modal.

Segue imagem abaixo.

importCities3.jpg

Código Fonte


@{
    ViewBag.Title = "Importação Cidades";
    Layout = "~/Views/Shared/_Layout.cshtml";

    var List = TempData["list"] != null ? TempData["list"] as IEnumerable<dynamic> : null;
}
<script src="~/Public/js/bootbox.min.js"></script>
<div class="row">
    <div class="span12">
        <div class="widget ">
            <div class="widget-header">
                <i class="icon-user"></i>
                <h3>@ViewBag.title</h3>
            </div>
            <div class="action-table widget-content">
                @if (TempData["ReturnMessage"] != null)
                {
                    <div class="alert alert-info">@TempData["ReturnMessage"]</div>
                }
                <form class="form-horizontal" method="post" enctype="multipart/form-data" action="@Html.Raw("/importacao-planilha/processar-cities")">
                    <div class='control-group'>
                        <label class='control-label'>Nome</label><div class='controls'>
                            <input name="name" type='text' class='span6' id='form-name' required />
                        </div>
                    </div>
                    <div class='control-group'>
                        <label class='control-label'>Excel</label><div class='controls'>
                            <input name='excel' type='file' class='span6' id='excel' required />
                        </div>
                    </div>
                    <br />
                    <div class='form-actions'>
                        <a href='@Html.Raw("/painel")' class='btn'>Voltar</a>
                        <button type='submit' class='btn btn-primary' id="import">Importar</button>
                    </div>
                </form>
                @if (List != null)
                {
                    <div class="table-responsive" id="correcoes">
                        <div class="widget-header">
                            <i class="icon-user"></i>
                            <h3>Correções das Cidades</h3>
                        </div>
                        <div class="table-responsive" id="import-cities">
                            <table class="table-responsive table table-striped mytableCustom display" id="cities">
                                <thead>
                                    <tr>
                                        <th>Id External</th>
                                        <th>Cidade</th>
                                        <th>UF</th>
                                        <th>Ações</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    @foreach (var item in List)
                                    {
                                        <tr>
                                            <td>@item.IdExternal</td>
                                            <td>@item.CitieNameExcel</td>
                                            <td>@item.UF</td>
                                            <td id="import"><input type='button' class='btn btn-primary corrigir' data-city="@item.CitieNameExcel" data-state="@item.UF" data-id="@item.IdExternal" value="Corrigir" /></td>
                                        </tr>
                                    }
                                </tbody>
                            </table>
                        </div>
                    </div>
                }
            </div>
        </div>
    </div>
</div>
<div class="bs-modal-lg fade modal modal-img" id="modal-image" style="width:40%;height: 70%;" role="dialog" tabindex="-1">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button aria-label="Close" class="close" data-dismiss="modal" type="button">
                    <span aria-hidden="true">&times;</span>
                </button>
                <h4 class="modal-title" id="myModalLabel">Lista de Possíveis Cidades Encontradas</h4>
            </div>
            <div class="modal-body" id="modal-body">
                <table style="display:none;" id="importCities">
                    <thead>
                        <tr>
                            <th>Cidades</th>
                            <th>Ações</th>
                        </tr>
                    </thead>
                    <tbody id="tbody"></tbody>
                </table>
            </div>
        </div>
    </div>
</div>
<script>
    function createModal(result, dataCitieVet) {
        $("#importCities").show();
        var obj = JSON.parse(result);
        var tbody = $('#tbody');

        obj.forEach(function (item, index) {
        var $tr = $("<tr>").append(
            $("<td>").text(item.Name),
            $("<td>").append($("<input></input>")
                                    .attr({ "type": "button",
                                            "class": "btn btn-primary insert",
                                            "data-citieName": item.Name,
                                            "data-cityId": item.Id
                                    })
                                    .val("Inserir"))
            ).appendTo("tbody");
        });

        $(".insert").on("click", function () {
            var cityid = $(this).data("cityid"),
            citiename =  $(this).data("citiename"),
            path = "/importacao-planilha/insert-city";
            dataCitieVet.push(cityid, citiename);
            $.ajax({
                type: "POST",
                url: path,
                data: {
                    "data": dataCitieVet
                },
                success: function (result) {
                    bootbox.alert(" Cidade salva com sucesso! ");
                }
            });
        });

        $("#modal-image").modal("show");
        $("#importCities").DataTable();

        $(document).on("shown.bs.modal", function (e) {
            $.fn.dataTable.tables( {visible: true, api: true} ).columns.adjust();
        });
    }

    $(document).ready(function () {
         $("#form-name").val("@TempData["name"]");
        var dataCitieVet = [6];

        Array.prototype.clear = function () {
            this.length = 0;
        };

        $(".corrigir").on("click", function () {
            dataCitieVet.clear();
            var wrongCity = $(this).data("city"),
            state = $(this).data("state"),
            idexternal = $(this).data("id"),
            name = "@TempData["name"]",
            path = "/importacao-planilha/get-cities";

            dataCitieVet.push(idexternal, wrongCity, state,name);
            $.ajax({
                type: "POST",
                url: path,
                data: {
                    "cityWrong": wrongCity,
                    "state": state
                },
                success: function (result) {
                    createModal(result, dataCitieVet);
                }
            });

            var citie = $(this).parent().parent();
            citie.remove();
        });

        $('.mytableCustom').DataTable();
    });
</script>
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags datatable javascript ou faça a sua própria pergunta.