2013-07-01 87 views
0

我想顯示多個文本框,具體取決於用戶從下拉框中選擇的數字。下面的示例:根據下拉框選擇顯示文本框

enter image description here

所以,無論數量在下拉刷新頁面中選擇,並顯示該號碼的文本框中。我需要去20個領域。有沒有辦法在C#或者使用Ajax Control Toolkit來做到這一點?

ASPX

<asp:Label ID="NumAccounts" runat="server" Text="# of Accounts"></asp:Label>  <asp:DropDownList 
     ID="EmpNameList" runat="server" onselectedindexchanged="NumAccountsList_SelectedIndexChanged" 
        AutoPostBack="True"> 
     </asp:DropDownList> 
+0

試試看[這裏](http://forums.asp.net/t/1785209.aspx/1) – Nathan

+0

@Nathan謝謝nathan,這非常有幫助! – techora

回答

0

試試這個

<asp:Label ID="NumAccounts" runat="server" Text="# of Accounts"></asp:Label>  <asp:DropDownList 
      ID="EmpNameList" runat="server" onselectedindexchanged="NumAccountsList_SelectedIndexChanged" 
         AutoPostBack="True"> 
      </asp:DropDownList> 

    <div> 
      <asp:PlaceHolder id="ContentPlaceHolder1" runat="server" /> 
     </div> 



protected void NumAccountsList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
       ContentPlaceHolder1.Controls.Clear(); 
       for(i=0; i<Convert.ToInt32(EmpNameList.SelectedItem.Value); i++) 
        { 

           TextBox tx= new TextBox(); 
           tx.ID="tx"+i; 
           ContentPlaceHolder1.Controls.Add(tx); 
           ContentPlaceHolder1.Controls.Add(new LiteralControl("<br />")); 
        } 

    } 
+0

我收到了「ContentPlaceHolder只能在.master文件中使用」。當我試圖運行這個。 – techora

+0

對不起,應該只是佔位符 –

+0

完美的作品!非常感謝你,一個簡單的問題,現在它只是把所有的文本框放在一行上,如果我想把它們放在不同的行上,使用換行符,我應該在哪裏放置
? – techora

1

肯定有。 使用:

int ctrlCount=Convert.ToInt32(DropDownList1.SelectedItem.Value); 
int ctrlTopPos=30; 

lbl_name.Text="Name:"; 
for(int i=0;i<ctrlCount;i++) 
{ 
Label lbl_name=new Label(); 
TextBox txt_cur=new TextBox(); 
txt_cur.Top=ctrlTopPos+(i*30); 
lbl_name.top=ctrlTopPos+(i*30); 
txt_cur.left=lbl_name.Width+30; 
Panel1.Controls.Add(lbl_name); 
Panel1.Controls.Add(txt_cur); 
} 

創建一個asp:面板並將其命名爲Panel1。 將給定的代碼放入下拉列表的SelectedIndexChanged事件中。 將您的下拉列表的autopostback屬性設置爲true。 它會工作。 希望有所幫助。

相關問題