Показывать текстовые поля в зависимости от выбора раскрывающегося списка

Я хочу показать несколько текстовых полей в зависимости от числа, которое пользователь выбирает из раскрывающегося списка. Пример ниже:

введите здесь описание изображения

Таким образом, любое число, выбранное в раскрывающемся списке, обновляет страницу и отображает это количество текстовых полей. Мне нужно пройти до 20 полей. Есть ли способ сделать это на С# или, может быть, с помощью 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>

person techora    schedule 01.07.2013    source источник
comment
Попробуйте посмотреть здесь   -  person Nathan    schedule 01.07.2013
comment
@Nathan Натан, спасибо, это было очень полезно!   -  person techora    schedule 01.07.2013


Ответы (2)


попробуй это

<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 />"));
                  }

    }  
person COLD TOLD    schedule 01.07.2013
comment
Я получаю, что ContentPlaceHolder можно использовать только в файлах .master. когда я пытаюсь запустить это. - person techora; 01.07.2013
comment
извините, должно быть просто местозаполнитель - person COLD TOLD; 01.07.2013
comment
Работает отлично! Большое спасибо, один быстрый вопрос, прямо сейчас он просто помещает все текстовые поля в одну строку, если бы я хотел разместить их на разных строках, используя разрывы строк, где бы я разместил ‹br /›? - person techora; 01.07.2013

конечно есть. использовать:

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:panel и назовите ее Panel1. Поместите данный код в событие SelectedIndexChanged вашего выпадающего списка. установите для свойства autopostback вашего раскрывающегося списка значение true. это будет работать. надеюсь, это поможет.

person Ali.Rashidi    schedule 01.07.2013