2012-10-09 18 views
7

Necesito eliminar un control (un cuadro de texto) de mi página cuando se verifica una determinada condición. ¿Es posible hacerlo desde código subyacente o necesito usar JavaScript?Eliminar un control asp.net del código subyacente

NOTA tengo que quitar el control, no ocultar ...

+1

Simplemente elimínelo por ID de la colección Controles de página. – IrishChieftain

+0

¿Cuándo se verifica su condición? ¿Es antes/durante el procesamiento de la página? De lo contrario, necesitaría javascript/DOM para lograr esto sin recargar la página. –

+0

@ J.Hudler la condición se evalúa durante page_load – davioooh

Respuesta

10

Uso Controls.Remove o Controls.RemoveAt en la matriz ControlCollection.

Por ejemplo, si desea eliminar todos los cuadros de texto a partir de la primera página:

var allTextBoxes = Page.Controls.OfType<TextBox>().ToList(); 
foreach(TextBox txt in allTextBoxes) 
    Page.Controls.Remove(txt); 

(tenga en cuenta que es necesario agregar using System.Linq para Enumerable.OfType)

o si desea quitar una TextBox con una ID dada:

TextBox textBox1 = (TextBox)Page.FindControl("TextBox1"); // note that this doesn't work when you use MasterPages 
if(textBox1 != null) 
    Page.Controls.Remove(textBox1); 

Si solo quiere ocultarlo (y eliminarlo del cl ientside completamente), también puede hacerlo invisible:

textBox1.Visible = false; 
0

Sí, sólo puede eliminarlo de la colección Controles de la página:

this.Controls.Remove(control); 
2

Mientras que usted podría quitar de la colección de controles, ¿por qué no ocultarlo?

yourTextBox.Visible = false; 

Esto evitará que se incluya en el html generado enviado al navegador.

1

Cuando configura .Visible=false, nunca se representará en la página. Si elimina el control de la colección Controls, no lo haga durante las fases DataBind, Init, Load, PreRender o Unload, ya que arrojará una excepción.

Agregar o quitar el control dinámicamente puede ocasionar problemas.

Cuestiones relacionadas