2010-09-25 14 views
17

Czy istnieje prosty sposób na zresetowanie wszystkich pól w formularzu?Wyczyść wszystkie pola w formularzu ASP.net

Mam około 100 elementów sterujących w moim formularzu asp.net i są przyciski przesyłania i resetowania.

Jak ustawić wszystkie wartości w polach null, gdy użytkownik kliknie przycisk resetowania?

Mam wiele list rozwijanych, pól tekstowych, pól wyboru.

+0

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

+1

@Claudio, OP pyta jak zresetować wszystkie pola formularza w aplikacji ASP.NET. Nic nie jest wspomniane o jQuery i głosowaniu, aby zamknąć tę odpowiedź, ponieważ dokładny duplikat wydaje mi się błędny. –

+0

@Darin Dimitrov: może masz rację. Zakładając, że każdy używa/jest skłonny używać jquery (nawet w dzisiejszych czasach) może być zbyt pretensjonalny. Przepraszam, ale nie mogę teraz zmienić mojego głosu. BTW: Nadal uważam, że resetowanie typu wejścia może prowadzić do zamieszania. –

Odpowiedz

13

pętli wszystkich elementów sterujących na stronie, a jeśli kontrola jest typu TextBox, ustaw właściwość Text na 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); 
      } 
     } 
    } 
} 

Następnie nazwać to w zdarzenia click tak:

ClearTextBoxes(Page); 
7

spróbować dodać:

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

do formularza.

+4

Do tej pory wiem, że zainicjowałoby pole formularzy do stanu początkowego. Jeśli stan początkowy dla texbox był "HELLO" Przywróci to wartość. Nie sądzę, że to jest to, czego potrzebuje użytkownik. –

17

Dodaj to do obsługi po stronie serwera przycisku Cancel:

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

Spowoduje to utratę wszystkich danych na stanie widoku, które mogą być niepożądane. – Tomasi

+5

Jeśli usuwamy wszystkie pola, oczywiście nie musimy zachować tego stanu w pierwszej kolejności ...po prostu ponownie ładujemy stronę, co jest najprostszym sposobem na zrobienie tego. Określił, że wszystkie pola zostały wyczyszczone :-) – IrishChieftain

+0

Czy mogę zapytać, dlaczego wywołujesz przekierowanie z drugim parametrem "true"? Czy nie użyłbyś 'false', aby zapobiec' AbortThreadException'? ([Właściwy link] (https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redirect/).) –

7

można zrobić użycie zdarzenia OnClientClick. Spowoduje to zresetowanie wszystkich wszystkich formantów obecnych w formularzu. OnClientClick="this.form.reset();return false;"

zobaczyć kod:

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

działa przed wysłaniem formularza. po przesłaniu formularza, a następnie po kliknięciu przycisku reset, formularz nie jest czyszczony. –

+0

OnClientClick jest zawsze wywoływany przed kodem po stronie serwera, więc co to jest, aby wyczyścić formularz przed przesłaniem/????? – dnxit

+0

To działało dla mnie, ale jak mogę wyjaśnić wszystkie formularze na 1 stronie, mam stronę, która ma 4 formularze z jakiegoś dziwnego powodu, ale chcę wyczyścić wszystko jednym kliknięciem – Anton

1

Jeśli używasz obiektu asp.net Formview, wystarczy użyć myFormView.DataBind(); w przypadku resetu kliknij przycisk.

4

Najlepszym rozwiązaniem z mojej strony byłoby

Response.Redirect(Request.RawUrl); 

Wystarczy dodać ten kod na anulowanie lub przycisk reset w swojej kontroli ASP.NET.

0

Lub jeśli używasz Angular.

Dodaj to do przycisku na stronie cshtml:

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

i to do pliku .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; 
Powiązane problemy