2016-02-29 92 views
0

我有一個簡單的網頁表單,它由多個文本框和下拉列表組成。我需要一種方法來獲取列表中所有元素的值。我知道我可以單獨使用textbox1.value獲取值,但我不知道窗體中有多少個文本框/下拉框。 例如如何獲取所有網頁表單元素值

<form id="form1" runat="server"> 
    <div> 
     Tier: 
      <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> 

     Author: 
      <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> 

     Quotation For: 
      <asp:TextBox ID="questionfor" runat="server"></asp:TextBox> 
    </div> 

如何獲取列表中的值?我如何循環瀏覽它們?最終目標是將元素Id及其值存儲在數據庫中。因此,伴隨着價值,我也需要id。例如在數據庫中,我將有兩個列elementName(它是elementID)及其相應的值。

+1

你可以這樣做幾種方法..如果你明白'Lambda's'和如何做一個foreach你可以做到這一點基於控件類型..或者你可以做到這一點舊的時尚方式,並使用'foreach(Control中的Control ctrl)'檢查類型是否是DropDowList或TextBox ..其實很簡單 – MethodMan

回答

0

這裏是東西,如果你想獲得的ID值,那麼你可以檢查if(c.ID == textBoxId.ID)那麼textBoxId.Text添加到列表,你可以有多個可以嘗試

Protected void GetControlValues(ControlCollection controls) 
{ 
    var holdList = new List<string>(); 
    foreach(Control c in controls) 
    { 
     if(c is System.Web.UI.WebControls.TextBox) 
     { 
      holdList.Add(c.Text); //this will get the value of the TextBox 
     } 
     else if (c.controls.Count > 0) 
     { 
      GetControlValues(c.Controls) 
     } 
    } 
} 

如果這foreach循環,如果內部檢查你知道你正在檢查的控件的類型..

+0

遞歸在哪裏? –

+0

順便提一句:_No_控件的類型是'ListItem'。 –

+0

我會編輯答案,顯示使用foreach遞歸(控制迴路 – MethodMan

相關問題