0

我想根据用户从下拉框中选择的数字显示多个文本框。下面的例子:

在此处输入图像描述

因此,无论在下拉菜单中选择什么数字,页面都会刷新并显示该数量的文本框。我需要最多 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>
4

2 回答 2

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:panel 并将其命名为 Panel1。将给定的代码放在下拉列表的 SelectedIndexChanged 事件中。将下拉列表的 autopostback 属性设置为 true。它会起作用的。希望有帮助。

于 2013-07-01T19:02:37.157 回答
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 />"));
                  }

    }  
于 2013-07-01T18:53:34.713 回答