Solución:
La propiedad “Visible” de un control ASP.NET determina si se representará o no en el cliente (es decir, se enviará al cliente). Si es falso cuando se procesa la página, nunca llegará al cliente.
Por lo tanto, técnicamente no puede establecer esa propiedad del control.
Dicho eso, si el control es renderizado en el cliente porque la propiedad Visible es verdadera cuando se renderiza la página, luego puede ocultarla usando javascript como este:
var theControl = document.getElementById("txtEditBox");
theControl.style.display = "none";
// to show it again:
theControl.style.display = "";
Eso supone que el control id
El atributo realmente es “txtEditBox” en el cliente y ya está visible.
Además, ¿es esa la mejor manera de ocultar / mostrar un control ASP.NET desde una función de Javascript?
No hay necesariamente una “mejor” manera, aunque un enfoque mejor es usar definiciones de clases CSS:
.invisible { display: none; }
Cuando desee ocultar algo, aplique dinámicamente esa clase al elemento; cuando quiera volver a mostrarlo, elimínelo. Tenga en cuenta que creo que esto solo funcionará para elementos cuyo display
el valor comienza como block
.
en lugar de usar visible, configure su css para mostrar: ninguno
//css:
.invisible { display:none; }
//C#
txtEditBox.CssClass="invisible";
txtEditBox.CssClass=""; // visible again
//javascript
document.getElementById('txtEditBox').className="invisible"
document.getElementById('txtEditBox').className=""
Establezca el estilo en “display: none”.
var theControl = document.getElementById("<%= txtEditBox.ClientID %>");
theControl.style.display = "none";