2010-03-01 7 views

Répondre

14

vous devez écrire et appeler similaire function après submit

public static void EmptyTextBoxes(Control parent) 
    { 
     foreach (Control c in parent.Controls) { 
     if (c.GetType() == typeof(TextBox)) 
     { 
      ((TextBox)(c)).Text = string.Empty;    
     } 
     } 
    } 

référence

http://www.tek-tips.com/faqs.cfm?fid=6470

0

Vous pouvez utiliser la méthode JavaScript reset() ou lancer en boucle toutes les zones de texte et définir la propriété Text sur une chaîne vide.

foreach(var control in this.Controls){ 
    TextBox tb = control as TextBox; 
    if (tb != null) 
    { 
     tb.Text = string.Empty; 
    } 
} 
0

Vous pouvez le faire dans la page:

foreach (var tb in Controls.OfType<TextBox>()) 
{ 
    tb.Text = null; 
} 

Si vous devez effacer toute une hiérarchie d'entre eux, appeler cette fois de la page: ClearTextBoxes(this);

Et voici la fonction:

private void ClearTextBoxes(Control c) { 
    foreach (var tb in c.Controls.OfType<TextBox>()) 
    { 
    tb.Text = null; 
    } 
    foreach (var control in c.Controls) { 
    ClearTextBoxes(control); //Recurse down to children 
    } 
} 
0
public static Control[] FlattenHierachy(Control root) 
{ 
    List<Control> list = new List<Control>(); 
    list.Add(root); 
    if (root.HasControls()) 
    { 
     foreach (Control control in root.Controls) 
     { 
      list.AddRange(FlattenHierachy(control)); 
     } 
    } 
    return list.ToArray(); 
} 

private void ClearTextBoxes() 
{ 
    Control[] allControls = FlattenHierachy(Page); 
    foreach (Control control in allControls) 
    { 
     TextBox textBox = control as TextBox; 
     if (textBox != null) 
     { 
      textBox.Text = ""; 
     } 
    } 
} 

Ce code collectera toutes les zones de texte dans une liste et définissez leur propriété text à "".

0

Bien Vous pouvez aussi bien définir le champ pour ne pas utiliser viewstate, ce qui impliquera dans un boost de performance, petit, mais néanmoins un boost. En outre, vous pouvez faire un response.redirect à la même page, ou un server.transfer.
Si ces deux solutions ne vous conviennent pas, vous pouvez utiliser un élément de type textbox.text = string.empty et dropdowlist.clearselection. Ils pourraient ne pas être aussi rapide que vous pourriez vouloir, ils sont beaucoup plus élégants.

0

SOLUTION COMPLÈTEMENT NON TESTÉ:

Tu ne peux pas utiliser ME.ViewState.Clear() dans les gestionnaires d'événements Init ou LoadViewState?

Ou il pourrait être Page.Viewstate.Clear() ou même Page.ClearChildViewState() ...

Désolé - ne l'ont pas essayé dans la colère ....

+0

juste écrire cette ligne réinitialisera tous les champs. this.form1.ID = "newid"; – Adeel

+0

Peut être utile, sauf si l'ID de formulaire est référencé (bien que pour des raisons évidentes, dans ASP.NET cela ne soit pas le cas) – CJM

4

Et ceci pour la compensation tous les contrôles sous forme comme zone de texte, case à cocher, radioButton

vous pouvez ajouter différents types que vous voulez ..

private void ClearTextBoxes(Control control) 
    { 
     foreach (Control c in control.Controls) 
     { 
      if (c is TextBox) 
      { 
       ((TextBox)c).Clear(); 
      } 

      if (c.HasChildren) 
      { 
       ClearTextBoxes(c); 
      } 


      if (c is CheckBox) 
      { 

       ((CheckBox)c).Checked = false; 
      } 

      if (c is RadioButton) 
      { 
       ((RadioButton)c).Checked = false; 
      } 
     } 
    } 
-1

Créer une fonction appelée cleardata():

void cleardata() 
{ 
    textbox1.Clear(); 
    textbox2.Clear(); 
    textbox3.Clear(); 
    textbox4.Clear(); 
} 

Et appelez cette fonction lorsque vous en avez besoin.

0

Ceci est une vieille question, mais je voulais juste ajouter ce qui suit, dans le cas où les contrôles sont dans une zone de groupe , vous pouvez le faire comme ça, alors:

 foreach (Control c in this.form.Controls) 
     { 
      //Tests each control to see if it is a GroupBox 
      if (c is GroupBox) 
      { 
       clearRadioButtons(c.Controls); 
       clearListBox(c.Controls); 
       resetDateTime(c.Controls); 
       clearTextBoxes(c.Controls); 
       clearComboBoxes(c.Controls); 
      } 
     }  
    public static void clearTextBoxes(Control.ControlCollection controls) 
    { 
     //Loops through all controls on form 
     foreach (Control c in controls) 
     { 
      //Tests each control to see if it is a textbox 
      if (c is TextBox) 
      { 
       //Converts to useable format and clears textboxes 
       var text = (TextBox)c; 
       text.Clear(); 
      } 
     } 
    } 
Questions connexes