0

Tengo un grid anidado(jqxGrid) por lo que al expander una fila me devuelve el siguiente Array. Nota: Este arreglo puede cambiar según la fila expandida puede haber ocasiones que solo tenga una métrica o dos como dije todo depende de lo que me regrese la fila expandida.

Este es mi Array:

var col_detalle_subgrid = [
  {"Metrica":"Quincenal", "Nombre":"Paco", "Puesto":"Constructor", "Edad":40},
  {"Metrica":"Semanal", "Nombre":"Pepe", "Puesto":"Limpieza", "Edad":25}, 
  {"Metrica":"Mensual", "Nombre":"Juan", "Puesto":"Gerente", "Edad":35}, 
  {"Metrica":"Bimestral", "Nombre":"Alonso", "Puesto":"Mecánico", "Edad":28}, 
  {"Metrica":"Anual", "Nombre":"Jose", "Puesto":"Maestro", "Edad":28}
];

Tengo dos input de HTML en mi Popup (Boostrap) que están en el mismo WebForm y lo que requiero hacer es colocar el valor del Nombre y edad pero no me muestra nada.

¿Alguna idea?

Trabajo con columnas dinámicas es por ello que no ingreso el nombre de mis columnas en el bucle y tampoco declaro mis input con el id del arreglo

Aquí coloco mi código.

// El Array lo recorro de esta forma ya que como trabajo con columnas dinamicas el nombre puede cambiar

for (var i in col_detalle_subgrid) {
  for (var j in col_detalle_subgrid[i]) {

    if (col_detalle_subgrid[i][j] == "Quincenal") {
      // Si la comparación es correcta visualizo una Tab(Estas pertenecen por cada metrica)
      $("#Quincenal").css("display", "inline-block");           

    }
    else if (col_detalle_subgrid[i][j] == "Semanal") {
      $("#Semanal").css("display", "inline-block")

    }
    else if (col_detalle_subgrid[i][j] == "Mensual") {
      $("#Mensual").css("display", "inline-block");         

    }
    else if (col_detalle_subgrid[i][j] == "Bimestral") {

      $("Bimestral").css("display", "inline-block");

    }
    else if (col_detalle_subgrid[i][j] == "Anual") {
      $("#Anual").css("display", "inline-block");

    }

    //Aqui coloco los valores del Array en el input text pero no me muestra nada

    $("#txtNombreQC").val(col_detalle_subgrid[i][j]);
    $("#txtEdadQC").val(col_detalle_subgrid[i][j]);

    $("#txtNombreSM").val(col_detalle_subgrid[i][j]);
    $("#txtEdadSM").val(col_detalle_subgrid[i][j]);


    $("#txtNombreMS").val(col_detalle_subgrid[i][j]);
    $("#txtEdadMS").val(col_detalle_subgrid[i][j]);


    $("#txtNombreBM").val(col_detalle_subgrid[i][j]);
    $("#txtEdadBM").val(col_detalle_subgrid[i][j]);


    $("#txtNombreAN").val(col_detalle_subgrid[i][j]);
    $("#txtEdadAN").val(col_detalle_subgrid[i][j]);

  }

}
gbianchi
  • 19,675
  • 11
  • 38
  • 58
SHINOBI
  • 499
  • 5
  • 22
  • 2
    [JSON != Objeto Javascript](https://es.stackoverflow.com/questions/164943/cu%c3%a1l-es-la-diferencia-entre-json-y-un-objeto-en-javascript) – Pablo Lozano Jun 04 '19 at 15:40
  • Porque replicas varias veces `$("#txtNombre").val(...)` y `$("#txtEdad").val(...)`. Recuerda que los id (`#`) son unicos. – Orlando De La Rosa Jun 04 '19 at 16:01
  • 1
    Hola, veo que has publicado practicamente la misma pregunta en al menos 2 oportunidades más. Te sugiero que edites alguna, y borres el resto. Tal parece que no logras explicar bien el problema. El código que subes tal vez es insuficiente para reproducir lo que intentas, además no provees un ejemplo claro del resultado deseado. Si crees que puedes mejorar tu pregunta, te invito a hacer clic en [edit]. Saludos – Mauricio Contreras Jun 04 '19 at 16:02
  • Hola @OrlandoDeLaRosa ya los he corregido disculpa y son varios porque cada Tab contiene sus dos inputs. En cuanto a asignar los valores a los controles ¿Podras ayudarme?. Gracias. – SHINOBI Jun 04 '19 at 16:08
  • Metrica, Nombre y Edad siempre vendran en cada uno de los item? – Orlando De La Rosa Jun 04 '19 at 16:21
  • Hola @OrlandoDeLaRosa Si vendrán en cada unos de los items pero como te comente trabajo con columnas dinámicas entonces pueden cambiar el nombre de Métrica a Forma de Pago por dar un ejemplo. – SHINOBI Jun 04 '19 at 16:25
  • Me dices que algunas veces la propiedad `Metrica` se puede llamar `Forma de pago`?. Adicional tu problema es el segundo `for`, ese bulce a mi parece no va. En ves del for mejor utiliza directo los nombre de la propiedades y las puedes validar con [hasOwnProperty](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty). – Orlando De La Rosa Jun 04 '19 at 16:29
  • Lo que debes hacer es algo bastante similar a lo que ya te respondieron en esta pregunta [¿Como recorrer un arrar json y hacer comparaciones?](https://es.stackoverflow.com/a/268356/107347) – Orlando De La Rosa Jun 04 '19 at 16:31
  • No quise usar las propiedades porque como te comento son cambiantes y entonces el programa va a tronar es por ello que coloque dos for. En cuanto a asignarle el valor a los input text trate de esta manera $("#txtNombreQC").val(col_detalle_subgrid[1][1]); pero me sale undefined. – SHINOBI Jun 04 '19 at 16:35
  • Entonces tienes un problema de "diseño", al menos que sepas todos los posibles nombre que puedan tener cada propiedad o la posicion del indice de cada propiedad (que siempre sea el mismo indice) entonces tienes un gran inconveniente. – Orlando De La Rosa Jun 04 '19 at 16:42
  • La posición del indice siempre sera igual pero lo que cambiara es el nombre de las columnas. Muchas gracias por tu ayuda. – SHINOBI Jun 04 '19 at 16:45

0 Answers0