Do not insert duplicate value in gridview

Asked

Viewed 35 times

0

I have a Javascript function that I can insert and delete an item in Gridview, but I have faced a problem by not letting an equal value be inserted, as I cannot enter an equal value dsEspecialidade and let there be no two lgPresrPrincipal marked as "YES".

function AdicionaEspecialidade() {


var dsEspecialidade = $("#Especialidade").val();
var lgPrestPrincipal = $("input[name='lgPrestPrincipal']:checked").val();


var Especialidade = {};
Especialidade.dsEspecialidade = dsEspecialidade;
Especialidade.lgPrestPrincipal = lgPrestPrincipal;


listaEspecialidades.push(Especialidade);
MontaGridEspecialidade();

return false;

}



(function ($) {
    remove = function (item, dsEspecialidade) {
        debugger;
        var especialidades = _.filter(listaEspecialidades, function (el) { return el.dsEspecialidade != dsEspecialidade });
        listaEspecialidades = especialidades;
        var tr = $(item).closest('tr');
        tr.fadeOut(400, function () { tr.remove(); });
        return false;
    }
})(jQuery);

function MontaGridEspecialidade() {
    $("#tbEspecialidades").html('');
    for (var i = 0; i < listaEspecialidades.length; i++) {
        var HTML = '<tr>';
        HTML += '<td>' + listaEspecialidades[i].dsEspecialidade + '</td>';
        HTML += '<td>' + listaEspecialidades[i].lgPrestPrincipal + '</td>';
        HTML += '<td>';
        HTML += '<img id="btnApagaEspecialidade" src="App_Lib/Img/icoExcluir.gif" title="Apaga Especialidade" onclick="remove(this,\'' + listaEspecialidades[i].dsEspecialidade + '\')" />';
        HTML += '</td>';
        HTML += '</tr>';
        $("#tbEspecialidades").append(HTML);
    }    
}

1 answer

2


Just condition the insertion of a new entry into the array with if checking whether an object already exists with a key of the same value and whether there is already an object with value "yes" or if the value is "no".

For this use the method .find() searching the array for an object where the value of dsEspecialidade is equal to the value of the input. If there is no new input, provided that the value of lgPrestPrincipal not "yes" and there is already an entry with "yes" in the array.

Example:

var listaEspecialidades = [];
function AdicionaEspecialidade() {

   var dsEspecialidade = $("#Especialidade").val();
   var lgPrestPrincipal = $("input[name='lgPrestPrincipal']:checked").val();
   
   // faz a verificação
   if(
      // verifica se não existe um objeto com o mesmo dsEspecialidade digitado no campo
      !listaEspecialidades.find(function(a){ return a.dsEspecialidade == dsEspecialidade })
      &&
      (
         // se o valor do campo for "sim" e não exista um objeto com "sim"
         lgPrestPrincipal == "sim" && !listaEspecialidades.find(function(a){ return a.lgPrestPrincipal == "sim" })
         ||
         lgPrestPrincipal == "nao"
      )
   ){
      var Especialidade = {};
      Especialidade.dsEspecialidade = dsEspecialidade;
      Especialidade.lgPrestPrincipal = lgPrestPrincipal;
      
      listaEspecialidades.push(Especialidade);
      MontaGridEspecialidade();
   }
   
   return false;
}

(function ($) { remove = function (item, dsEspecialidade) { debugger; var especialidades = _.filter(listaEspecialidades, function (el) { return el.dsEspecialidade != dsEspecialidade }); listaEspecialidades = especialidades; var tr = $(item).closest('tr'); tr.fadeOut(400, function () { tr.remove(); }); return false; } })(jQuery);

function MontaGridEspecialidade() {
    $("#tbEspecialidades").html('');
    for (var i = 0; i < listaEspecialidades.length; i++) {
        var HTML = '<tr>';
        HTML += '<td>' + listaEspecialidades[i].dsEspecialidade + '</td>';
        HTML += '<td>' + listaEspecialidades[i].lgPrestPrincipal + '</td>';
        HTML += '<td>';
        HTML += '<img id="btnApagaEspecialidade" src="App_Lib/Img/icoExcluir.gif" title="Apaga Especialidade" onclick="remove(this,\'' + listaEspecialidades[i].dsEspecialidade + '\')" />';
        HTML += '</td>';
        HTML += '</tr>';
        $("#tbEspecialidades").append(HTML);
    }    
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="Especialidade">
<input type="radio" name="lgPrestPrincipal" value="sim" checked> SIM
<input type="radio" name="lgPrestPrincipal" value="nao"> NÃO
<button onclick="AdicionaEspecialidade()">Adicionar</button>
<table border="1" id="tbEspecialidades"></table>

  • 1

    Thanks for the help friend, it worked (y).

Browser other questions tagged

You are not signed in. Login or sign up in order to post.