2017-09-13 8 views
1

私は、ユーザーがデータをテクスチャボックスまたはドロップダウンに入力するフォームを持っています。私はまだ全体のフォームをクリアしたくない、私はちょうどテーブルやコントロール全体のdivのコントロールをクリアしたい。これまでのところ、私のコードは各行のコントロールではなく、行を探しています。どのように各コントロールを見つけてそれを空にするテーブル行を反復処理できますか?テーブルまたはdiv内のすべてのコントロールをクリアする

フォームに他の項目をオートポピュレートするポストバックメソッドがあるので、jsまたはjqueryを使用したくありません。私はLastName.Text = string.empty;のいずれかを指定したくありません。それらをループして空のコントロールを設定したいと思います。

私の例のHTML:クリアテーブルコントロールのための

<div id="container"> 
<table id="servedTable" runat="server"> 
     <tr> 
       <td style="width: 20%;">First Name:</td> 
       <td style="width: 30%;"> 
       <asp:TextBox ID="servedFirstName" runat="server" Width="95%"></asp:TextBox></td> 
       <td style="width: 20%;">Last Name:</td> 
       <td style="width: 30%;"> 
       <asp:TextBox ID="servedLastName" runat="server" Width="95%"></asp:TextBox></td> 
     </tr> 
    </table> 
</div> 

分離コード:

foreach (Control ctrl in servedTable.Controls) 
{ 
     if (ctrl is TextBox) 
      ((TextBox)ctrl).Text = string.Empty; 
     else if (ctrl is DropDownList) 
      ((DropDownList)ctrl).ClearSelection();  
} 
+4

[jQueryを使用して特定のdiv内のすべての入力フィールドをクリアする方法](https://stackoverflow.com/questions/10543104/how-to-clear-all-input-fields-in) -a-specific-div-with-jquery) – Rahul

+0

@SgtOVERKILLコードが正常に見えますが、何が問題なのですか? – DiegoS

+0

@Rahul OPは具体的にno jsまたはjQueryを言った –

答えて

0
public static IEnumerable<T> GetControls<T>(this Control parent) where T : Control 
{ 
    foreach (Control control in parent.Controls) 
    { 
     if (control is T) yield return control as T; 
     foreach (Control descendant in GetControls<T>(control)) 
     { 
      if (control is T) 
       yield return descendant as T; 
     } 
    } 
} 

は次のように使用される:クリートのテキストボックスとドロップダウンにあなたのケースのために

List<TextBox> txt = dv.GetControls<TextBox>().ToList(); 

リスト

関連する問題