2010-09-25 89 views
17

¿Hay alguna manera fácil de restablecer todos los campos en un formulario?Borrar todos los campos en el formulario ASP.NET

Tengo alrededor de 100 controles en mi formulario asp.net y hay botones de enviar y restablecer.

¿Cómo anulo todos los valores en los campos cuando el usuario toca el botón de reinicio?

Tengo un montón de cuadros desplegables, cuadros de texto, casillas de verificación.

+0

cheque aquí http://stackoverflow.com/questions/680241/blank -out-a-form-with-jquery –

+1

@Claudio, el OP pregunta cómo restablecer todos los campos de un formulario en una aplicación ASP.NET. No se menciona nada sobre jQuery y votar para cerrar esta respuesta ya que un duplicado exacto me parece incorrecto. –

+0

@Darin Dimitrov: tal vez tengas razón. Asumir que todos están usando/están dispuestos a usar jquery (incluso hoy en día) podría ser demasiado pretencioso. Lo siento pero no puedo revertir mi voto hasta ahora, lo sé. Por cierto: sigo pensando que el reinicio del tipo de entrada puede conducir a una confusión. –

Respuesta

13

recorrer todos los controles de la página, y si el control es de tipo TextBox, establezca la propiedad Text a String.Empty

protected void ClearTextBoxes(Control p1) 
{ 
    foreach (Control ctrl in p1.Controls) 
    { 
     if(ctrl is TextBox) 
     { 
      TextBox t = ctrl as TextBox; 

      if(t != null) 
      { 
        t.Text = String.Empty; 
      } 
     } 
     else 
     { 
      if (ctrl.Controls.Count > 0) 
      { 
       ClearTextBoxes(ctrl); 
      } 
     } 
    } 
} 

Entonces llamarlo en su evento click de esta manera:

ClearTextBoxes(Page); 
7

Trate de añadir un:

<input type="reset" value="Clear" /> 

a su formulario.

+4

Hasta ahora sé que inicializaría el campo de formularios al estado inicial. Si el estado inicial de un texbox fue "HOLA", se restablecerá a ese valor. No creo que sea lo que el usuario necesita. –

17

Esto, unido al manejador del lado del servidor del botón de cancelación:

Response.Redirect("~/mypage.aspx", false); 
+0

Esto perdería todos los datos de viewstate, lo que podría no ser deseable. – Tomasi

+5

Si estamos limpiando todos los campos, obviamente no necesitamos retener el ViewState en primer lugar ...simplemente volvemos a cargar la página, que es la forma más sencilla de hacerlo. Especificó que todos los campos estaban siendo despejados :-) – IrishChieftain

+0

¿Puedo preguntar por qué llamas a redirigir con el segundo parámetro 'true'? ¿No preferirías usar 'false' para evitar una 'AbortThreadException'? ([Enlace relevante] (https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redirect/).) –

7

Usted puede hacer uso del evento OnClientClick. Esto restablecerá todo el control presente en el formulario. OnClientClick="this.form.reset();return false;"

ver el código:

<asp:Button ID="Reset_Button" runat="server" Text="Reset" 
    Width="81px" OnClientClick="this.form.reset();return false;" /> 
+0

está funcionando antes de enviar el formulario solamente. cuando envío el formulario y luego, si hago clic en restablecer, el formulario no se borra. –

+0

OnClientClick siempre se llama antes del código del lado del servidor, entonces ¿cuál es ese punto para borrar el formulario antes de enviar/????? – dnxit

+0

Esto funcionó para mí, pero ¿cómo puedo dejar en claro todos los formularios en 1 página, tengo una página que tiene 4 formularios por alguna razón extraña, pero quiero borrar todo con un solo clic – Anton

1

Si está utilizando asp.net objeto formview, sólo tiene que utilizar myFormView.DataBind(); en su caso botón de reinicio clic.

4

La mejor opción desde mi lado sería

Response.Redirect(Request.RawUrl); 

Sólo añadir este código en el botón cancelar o restablecer de su control asp.net.

0

O si está utilizando Angular.

Agregue esto a su botón en la página cshtml:

<input type="button" value="Cancel" id="cancel" ng-click="cancel();" /> 

Y esto a su archivo .js:

$scope.cancel = function() { 
    if (!$('form').dirtyForms('isDirty')) { 
     $('form').dirtyForms('setClean'); 
    } 
    else { 
     $('form').dirtyForms('isDirty', true); 
    } 
    var that = this; 
    var method = that.getUrl('CONTROLLER', 'ACTION', 'id', 'querystring'); 
    window.location = method; 
Cuestiones relacionadas