2013-07-01 171 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。 它会工作。 希望有所帮助。

相关问题