2016-02-29 32 views
0

我有一個簡單的網頁形式與一些下拉和文本框。我試圖通過循環遍歷控件來獲取所有元素的值。 (注意我假設我不知道元素的名稱/ ID,因此我試圖通過它們來獲取信息並將其存儲在數據庫中)。但是,當我通過控制循環時,即使有4個輸入元件和控制由System.Web.UI.LiteralControl代替System.Web.UI.WebControls.TextBox或System.Web.UI.WebControls.dropdown無法通過web窗體循環控制在c#

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script src="Datepicker/jquery-1.7.js" type="text/javascript"></script> 
    <script src="Datepicker/jquery-ui.js" type="text/javascript"></script> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" /> 

    <script> 
     $(function() { 
      $("#targetDueDate").datepicker(); 
     }); 
    </script> 
    <script> 
     $(function() { 
      $("#targetdeliveryoffiles").datepicker(); 
     }); 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <table> 

       <tr> 
        <td>Tier: 

        </td> 

        <td> 
         <asp:DropDownList ID="tier" runat="server"> 
          <asp:ListItem>Select Tier</asp:ListItem> 
          <asp:ListItem>Tier1</asp:ListItem> 
          <asp:ListItem>Tire2</asp:ListItem> 
          <asp:ListItem>Tier3</asp:ListItem> 
         </asp:DropDownList> 

        </td> 
       </tr> 

       <tr> 
        <td>Author: 

        </td> 

        <td> 
         <asp:DropDownList ID="author" runat="server"> 
          <asp:ListItem>Select Author</asp:ListItem> 
          <asp:ListItem>Author1</asp:ListItem> 
          <asp:ListItem>Author2</asp:ListItem> 
          <asp:ListItem>Author3</asp:ListItem> 
         </asp:DropDownList> 
        </td> 
       </tr> 


         <tr> 
        <td>Quotation For: 

        </td> 

        <td> 
         <asp:TextBox ID="quotationFor" runat="server"></asp:TextBox> 

        </td> 
       </tr> 

       <tr> 
        <td>Previous Est #:</td> 
        <td> 
         <asp:TextBox ID="previousEst" runat="server"></asp:TextBox> 
         <asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
          ControlToValidate="previousEst" 
          ValidationExpression="\d+" 
          Display="Dynamic" 
          EnableClientScript="true" 
          ErrorMessage="Please enter numbers only" 
          runat="server" ValidationGroup="a" ForeColor="Red" /> 
        </td> 
       </tr> 


      </table> 

      <br /> 

      <div style="text-align: center; width: 327px;"> 

       <asp:Button ID="submit" runat="server" Text="Submit" CssClass="btnsubmit" ValidationGroup="a" OnClick="submit_Click" /> 

      </div> 


     </div> 
    </form> 
</body> 
</html> 

的的onsubmit代碼表示

protected void submit_Click(object sender, EventArgs e) 
    { 
     foreach(Control c in controls) 
     { 
      if(c is System.Web.UI.WebControls.TextBox) 
      { 
       /// Do Something 
      } 
     } 
    } 

我在做什麼錯?我如何通過元素循環來獲取它們的值? (也因爲我需要在數據庫中存儲兩個ID)

回答

0

一切都是在Web窗體中的控件;靜態文本是LiteralControl類型。因此,您需要按照原樣檢查控件的類型,並避免使用Label,Literal,LiteralControl類型的控件,只需查找窗體上的控件即可。有些控件是容器控件,因此您可能需要進入遞歸才能使其發揮作用。