清除表或div中的所有控件

时间:2017-09-13 14:16:39

标签: c# webforms controls

我有一个表单,用户将数据输入到texbox和/或下拉列表中。我不想清除整个表单,我只想清除表格中的控件或整个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();    
 }

1 个答案:

答案 0 :(得分:0)

function __construct()
{
    $perm = session()->get('perm');
    if (!isset($perm[$this->module]) || !$perm[$this->module]) {
        Session::flash('message_error', "<span class='glyphicon glyphicon-warning-sign'></span> Access denined!");
        return back();
    }
}

像这样使用:

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