2013-07-01 3 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 Спасибо, натан, это было очень полезно! – 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); 
} 

Создание жерех: панели и назовите его Panel1. Поместите данный код внутри события SelectedIndexChanged в раскрывающемся списке. задайте свойство autopostback вашего раскрывающегося списка true. он будет работать. надеюсь, что поможет.