2016-12-14 4 views
0

У меня есть 16 текстовых полей внутри панели. Я пытаюсь создать кнопку, которая очистит весь текст из каждого окна. В настоящее время я использую опцию txtbox.text = "", но там должен быть лучший способ сделать это.Очистка всех текстовых полей в таблице внутри панели C#

Я пробовал использовать panel.controls.clear(), но это тоже не работает.

<asp:Panel ID="pnlAddNewPeopleRecord" runat="server" Visible="false"> 
    <asp:Label ID="lblAddNewPeopleRecord" runat="server" Visible="true">Add To People Table</asp:Label> 
    <asp:Table runat="server" class="tblAddNewRecord"> 
     <asp:TableRow> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">ID</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeoplePersonID"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">First Name</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleFirstName"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Middle Initial</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleMiddleInitial"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Last Name</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleLastName"></asp:TextBox> 
      </asp:TableCell> 
     </asp:TableRow> 
     <asp:TableRow> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Street 1</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleStreet1"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Street 2</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleStreet2"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">City</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleCity"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">State</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleState"></asp:TextBox> 
      </asp:TableCell> 
     </asp:TableRow> 
     <asp:TableRow> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Zip Code</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleZipCode"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Country</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleCountry"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Phone 1</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeoplePhone1"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Phone 2</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeoplePhone2"></asp:TextBox> 
      </asp:TableCell> 
     </asp:TableRow> 
     <asp:TableRow> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Fax</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleFax"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Cell Phone</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleCellPhone"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Email</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleEmail"></asp:TextBox> 
      </asp:TableCell> 
      <asp:TableCell CssClass="tblCell"> 
       <asp:Label class="tblCellLabel" runat="server">Notes</asp:Label> 
       <asp:TextBox class="tblCellTextbox" runat="server" ID="txtbxPeopleNotes"></asp:TextBox> 
      </asp:TableCell> 
     </asp:TableRow> 
    </asp:Table> 

    <asp:Button runat="server" class="btnResetRecord" ID="btnAddNewPeopleResetRecords" Text="Reset Fields" OnClick="btnAddNewPeopleResetRecords_Click" /> 
    <asp:Button runat="server" class="btnAddNewRecord" ID="btnAddNewRecordToPeople" Text="Add Record To People Table" OnClick="btnAddNewRecordToPeople_Click" /> 
</asp:Panel> 

Я пользуюсь приведенным ниже кодом. Когда я нажимаю кнопку, страница ничего не делает.

protected void btnAddNewPeopleResetRecords_Click(object sender, EventArgs e) 
{ 
    resetAllTextBoxes(pnlAddNewPeopleRecord); 
} 

private void resetAllTextBoxes(System.Web.UI.WebControls.Panel pnlAddNewPeopleRecord) 
{ 
    foreach(System.Web.UI.Control c in pnlAddNewPeopleRecord.Controls) 
    { 
     if (c is System.Web.UI.WebControls.TextBox) 
     { 
      ((System.Web.UI.WebControls.TextBox)c).Text = ""; 
     } 
    } 
} 
+1

Является ли это WebForms? Я не очень хорошо знаком с webforms, но мое первое предложение - просто использовать javascript (особенно jQuery), чтобы очистить значения, и это можно сделать полностью на стороне клиента. Если это не вариант, вам может потребоваться изучить Ajax с помощью WebForms, чтобы позволить кнопке звонить на сервер без полной обратной передачи - вот основная идея в MVC, я не уверен, насколько хорошо это применимо к WebForms. –

ответ

0

Если вы хотите сделать это на стороне сервера, тогда вам будет наилучшим решением. Он может быть очищен, если linq доступен для вас.

using System.Web.UI.WebControls; 

private void resetAllTextBoxes(Panel pnlAddNewPeopleRecord) 
{ 
    foreach(var control in pnlAddNewPeopleRecord.Controls.OfType<TextBox>()) 
    { 
     control.Text = string.Empty; 
    } 
} 

В качестве альтернативы, вы можете сделать это на стороне клиента, если вам не нужно отправлять сообщения обратно на сервер. Использование jquery для удобства.

<input type="button" value="Clear Textboxes" onclick="ClearTextboxes();" /> 

<script type="text/javascript"> 
    function ClearTextboxes() 
    { 
     $(".tblCellTextbox").val(""); 
    } 
</script> 
+0

Когда я добавляю Javascript, поля не удаляются. Я также попробовал первое предложение, но это не сработало – kevorski

Смежные вопросы