Pregunta

Ok, necesito cambiar el valor de un campo oculto en una vista de cuadrícula y esto es lo que tengo hasta ahora:

for(var i = 0; i < gv_Proofs.rows.length; i++)
{
    var tbl_Cell = gv_Proofs.rows[i].cells[0];
    var sdiFound = false;

    for(var x = 0; x < tbl_Cell.childNodes.length; x++)
    {
        if(tbl_Cell.childNodes[x].id == "_ctl0_MasterContentPlaceHolder_gv_Proofs__ctl2_lbl_SDI")
        {
            if(tbl_Cell.childNodes[x].innerHTML == sdi)
                sdiFound = true;
        }
        if(tbl_Cell.childNodes[x].id == "_ctl0_MasterContentPlaceHolder_gv_Proofs__ctl2_lbl_Updated" && sdiFound)
            tbl_Cell.childNodes[x].value = "true";
    }
}

¿Alguien puede decirme qué estoy haciendo mal? ¡Gracias!

¿Fue útil?

Solución

Lo tengo funcionando. El bucle anterior funcionaba correctamente, pero aparentemente mi valor de sdi no siempre se configuraba correctamente y, por lo tanto, el valor que estaba comprobando siempre se configuraba como falso. Entonces, lo anterior funcionó perfectamente en mi caso si alguien alguna vez vuelve a tener este problema.

Otros consejos

Su primera declaración solo es verdadera si el id childNode es (truncado) lbl_SDI. Su segunda declaración solo es verdadera si la primera es verdadera (a través de sdiFound) Y la ID está (truncada) lbl_Updated.

Entonces, no hay forma de que la segunda afirmación sea cierta. La variable sdiFound solo será verdadera cuando el id del nodo no sea lbl_Updated.

Creo que mucha gente probablemente no esté de acuerdo con que usted también haga referencia a la ID de .NET específicamente. ¿Has considerado usar:

<%= lbl_SDI.ClientID %>

en tu javascript?

bueno, ¿puedes decir lo que está pasando? parece que está olvidando restablecer la variable sdiFound a falso, o interrumpir el ciclo cuando lo encuentra.

en cuanto a su pregunta:

si ejecuta la entrada html oculta como control del servidor, GridView la mostrará y tendrá una identificación única. luego puede encontrarlo usando getElementById. Puede poner esto dentro de un bucle que crea la identificación correcta para usted y debería poder encontrar su control.

Editar: caso clásico de verificación antes de publicar. Aparentemente la configuración hidden = true en realidad evita la vinculación de datos, lo que sea ??por eso que JS está teniendo problemas. I diría que este es uno de esos problemas típicos con ASP.NET que me hacen maldecir su nombre, pero usted podría elegir adaptar el control con uno de los muchos soluciones googleable.

Los comentarios sobre el uso de la ID de elemento en ASP.NET se dejaron intactos porque es malo.


Difícil de saber sin más código (¿cuándo se está ejecutando exactamente? ¿Hay algo más que lo sobrescribe? ¿Cómo se ve el marcado?) pero puedo decir ahora que hacer referencia a un elemento por su ID deformado de ASP.NET es malo Idea (TM).

Si puede, le sugiero que intente modificar esto en el código detrás de donde se maneja la referencia, o al menos escriba el JS allí donde puede usar clientID. De lo contrario, trataría de encontrar el elemento a través de un cazador de elementos expandido, el suyo o una utilidad de biblioteca como jquery et al's '' $ '' función, que le permitirá utilizar un sólido argumento CSS o Xpath en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top