Проблемы с удалением и повторной вставкой строки в список элементов - Javascript и Asp.net core mvc - PullRequest
0 голосов
/ 02 ноября 2019

Я разрабатываю экран регистрации телефона с ядром asp.net MVC и Javascript, где поля динамически создаются с использованием Javascript. Я контролирую индекс каждого поля и всякий раз, когда удаляю запись, я обновляю значения индекса всех строк (пример: PersonViewModel.PeopleContactsViewModel[(i)].PessoaContato). Все работает отлично ... Я использую PartialView для создания полей (После удаления строки я отправляю индекс 2 для частичного просмотра, и он вставляется в div.).

Необходимость: при удалении второй строкиМне нужно пересоздать его, а затем снова изменить положение, используя тот же индекс 2.

Проблема: Когда я пытаюсь выполнить описанную выше процедуру, строка всегда располагается в конце. Я бы хотел, чтобы она всегда была в одном и том же месте и просто менялась.

Я думаю, что проблема возникает здесь: '$("# div-contatos").Append(data)';

enter image description here

var formaContatoIdPrevious = "0";
$("#div-contatos").bind("click", ".sel-forma-contato", function (e) {
    //Forma de contato selecionada antes de alterar
    formaContatoIdPrevious = $(this).closest('.row').find('.sel-forma-contato').val();
}).on("change", ".sel-forma-contato", function (e) {
    //get row index
    var rowIndice = $(this).closest('.row').index() != '' ? $(this).closest('.row').index() : '0';

    //get row
    var $this = $(this);

    var pessoaContatoParametrosChangeViewModel = {
        PessoaNatureza: $('#pessoaNatureza').val(),
        FormaContatoIdChange: $(this).closest('.row').find('.sel-forma-contato').val(), //Forma de contato selecionada depois de alterar,
        RowIndice: parseInt(rowIndice)
    };

    var pessoaContatoViewModel = {
        Id: parseInt($(this).closest('.row').find('.hid-id').val() != '' ? $(this).closest('.row').find('.hid-id').val() : '0'),
        PessoaId: parseInt($(this).closest('.row').find('.hid-pessoaId').val() != '' ? $(this).closest('.row').find('.hid-pessoaId').val() : '0'),
        FormaContatoId: parseInt(formaContatoIdPrevious),
        FormaContatoTipoId: parseInt($(this).closest('.row').find('.sel-contato-tipo').val() != '' ? $(this).closest('.row').find('.sel-contato-tipo').val() : '0'),
        Contato: $(this).closest('.row').find('.txt-contato').val(),
        Observacao: $(this).closest('.row').find('.txt-observacao').val(),
        ContatoPrincipal: $(this).closest('.row').find('.ckb-contato-principal').is(":checked"),
        Ativo: $(this).closest('.row').find('.ckb-contato-ativo').is(":checked")
    };

    pessoaContatoParametrosChangeViewModel.PessoaContatoViewModel = pessoaContatoViewModel;


    $.ajax({
        url: "/pessoa-gerenciar/change-forma-contato",
        type: "POST",
        data: JSON.stringify(pessoaContatoParametrosChangeViewModel),
        contentType: "application/json",
        success: function (data) {

            $this.closest(".row").remove();
             $("#div-contatos").append(data);


        },
        error: function () {
            alert("Oops! Algo deu errado.");
            stopLoadModalInside();
        }
    });
...