2010-09-25 21 views
17

Esiste un modo semplice per reimpostare tutti i campi in un modulo?Cancella tutti i campi in ASP.net modulo

Ho circa 100 controlli nel mio modulo asp.net e ci sono pulsanti di invio e ripristino.

Come faccio a rendere tutti i valori nei campi nulli quando l'utente preme il pulsante di ripristino?

Ho un sacco di caselle a discesa, caselle di testo, caselle di controllo.

+0

controllo qui http://stackoverflow.com/questions/680241/blank -out-a-form-with-jquery –

+1

@Claudio, l'OP chiede come reimpostare tutti i campi di un modulo in un'applicazione ASP.NET. Nulla è menzionato su jQuery e il voto per chiudere questa risposta come un duplicato esatto mi sembra sbagliato. –

+0

@Darin Dimitrov: forse hai ragione. Supponendo che tutti stiano usando/voglia usare jquery (anche al giorno d'oggi) potrebbe essere troppo pretenzioso. Scusa ma non posso ripristinare il mio voto, finora lo so. BTW: Continuo a pensare che il reset del tipo di input possa portare a una confusione. –

risposta

13

loop attraverso tutti i controlli sulla pagina, e se il controllo è di tipo TextBox, impostare la proprietà 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); 
      } 
     } 
    } 
} 

Poi chiamarla nel vostro evento click in questo modo:

ClearTextBoxes(Page); 
7

Prova ad aggiungere un:

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

al form.

+4

Finora so che avrebbe inizializzato il campo dei moduli allo stato iniziale. Se lo stato iniziale di una texbox era "CIAO", si resetterà su quel valore. Non penso che sia ciò di cui l'utente ha bisogno. –

17

Aggiungere questo al gestore sul lato server del pulsante di annullamento:

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

Ciò perderebbe tutti i dati del viewstate, che potrebbero non essere desiderabili. – Tomasi

+5

Se stiamo cancellando tutti i campi, ovviamente non abbiamo bisogno di mantenere ViewState in primo luogo ...stiamo semplicemente caricando di nuovo la pagina, che è il modo più semplice per farlo. Ha specificato che tutti i campi sono stati cancellati :-) – IrishChieftain

+0

Posso chiedere perché si chiama reindirizzamento con il secondo parametro 'true'? Non preferiresti usare 'false' per evitare una' AbortThreadException'? ([Link pertinente] (https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redirect/).) –

7

si può fare uso dell'evento OnClientClick. Ciò ripristinerà tutto il controllo presente nel modulo. OnClientClick="this.form.reset();return false;"

vedere il codice:

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

funziona prima di inviare solo il modulo. quando invio il modulo e poi se clicco su reset, il modulo non viene cancellato. –

+0

OnClientClick viene sempre chiamato prima del codice lato server, quindi qual è il punto in cui cancellare il modulo prima di inviare/????? – dnxit

+0

Questo ha funzionato per me, ma come faccio a rendere chiari tutti i moduli su 1 pagina, ho una pagina che ha 4 moduli per qualche strano motivo, ma voglio cancellare tutto con un solo clic – Anton

1

Se si utilizza oggetto asp.net formview, basta usare myFormView.DataBind(); nel vostro evento pulsante di reset click.

4

L'opzione migliore da parte mia sarebbe

Response.Redirect(Request.RawUrl); 

Basta aggiungere questo codice sul pulsante annullare o ripristinare dal vostro controllo asp.net.

0

Oppure se si utilizza Angolare.

Aggiungi questo al vostro pulsante nella pagina cshtml:

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

E questo al file .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; 
Problemi correlati