2010-09-25 25 views
17

Formdaki tüm alanları sıfırlamanın kolay bir yolu var mı?ASP.NET formundaki tüm alanları temizle

Asp.net formumda yaklaşık 100 denetime sahibim ve gönderme ve sıfırlama düğmeleri var.

Kullanıcı sıfırlama düğmesine bastığında null değer alanlarındaki değerleri nasıl yapabilirim?

Çok fazla açılır kutu, metin kutusu ve onay kutum var. Bir ekleme

+0

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

+1

@Claudio, OP bir formun tüm alanlarını bir ASP.NET uygulamasında nasıl sıfırlayacağını soruyor. JQuery hakkında hiçbir şey söylenmez ve bu cevabı kapatmak için oylama tam bir kopya olarak bana yanlış görünüyor. –

+0

@Darin Dimitrov: belki haklısınız. Herkesin kullandığı/kullandığı jquery (günümüzde bile) çok iddialı olabilir. Üzgünüm ama şimdiye kadar oyumu geri alamıyorum biliyorum. BTW: Hala giriş tipi sıfırlamanın karışıklığa yol açabileceğini düşünüyorum. –

cevap

13

Loop, ve kontrol tipi TextBox ise, String.Empty Metin özelliğini ayarlayın:

7

Dene: Formunuza

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

. sayfadaki denetimlerin arasında durmadan

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

Şimdiye kadar biliyorum ki, form alanını başlangıç ​​durumuna getirecek. Bir texbox için başlangıç ​​durumu "HELLO" ise, bu değere sıfırlanır. Kullanıcının ihtiyacı olan şey olduğunu düşünmüyorum. –

17

iptal düğmesinin sunucu tarafı işleyicisi Bu ekle

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); 
      } 
     } 
    } 
} 

Sonra böyle tıklama olayı aramak:

ClearTextBoxes(Page); 
+0

Bu, tüm görüntüleme verilerini kaybeder, ki bu istenmeyebilir. – Tomasi

+5

Tüm alanları temizliyorsak, en başta ViewState'i korumamız gerekmiyor ...Sadece bunu yapmanın en basit yolu olan sayfayı yeniden yüklüyoruz. Tüm alanların temizlendiğini belirtti :-) – IrishChieftain

+0

Neden ikinci parametre olan true ile yönlendirmeyi aradığınızı sorabilir miyim? AbortThreadException'ı engellemek için 'false' kullanmayı mı tercih edersiniz? ([İlgili bağlantı] (https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redirect/).) –

7

Sen yapabilir OnClientClick olayının kullanılması. Bu, formdaki tüm kontrolleri sıfırlar. Eğer asp.net FormView nesnesini kullanıyorsanız sadece reset düğmesi click olayı myFormView.DataBind(); kullanın

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

sadece formu göndermeden önce çalışıyor. formu teslim ettiğimde ve sıfırlamaya tıklarsam form temizlenmez. –

+0

OnClientClick her zaman sunucu tarafı kodundan önce çağrılır, böylece gönderilmeden önce formu temizlemek için ne yaparsınız ????? – dnxit

+0

Bu benim için çalıştı, ancak 1 sayfada tüm formları nasıl temizlerim, bazı garip nedenlerden dolayı 4 formu olan bir sayfam var, ama tek bir tıklamayla hepsini temizlemek istiyorum – Anton

1

:

OnClientClick="this.form.reset();return false;" Kodu Bkz.

4

benim tarafımdan en iyi seçenek

Response.Redirect(Request.RawUrl); 

Sadece asp.net kontrolünün iptal veya sıfırlama düğmesine bu kodu ekleyin olurdu.

0

Veya Angular kullanıyorsanız.

cshtml sayfasında düğmesi ekleyin:

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

Ve bu senin Js dosyaya: Burada

$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;