无法看到动态加载的文本框

时间:2011-04-01 18:44:18

标签: asp.net

请找到我的aspx和codebind文件,我不明白为什么在部署代码后我无法在我的页面上看到文本框。 ascx代码

<asp:DropDownList ID="DropDownList1" runat="server" 
onselectedindexchanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true" >

<asp:ListItem Text="one" Enabled="true" Value="1" Selected="True"></asp:ListItem> 
<asp:ListItem Text="two" Enabled="true" Value="2" ></asp:ListItem>

</asp:DropDownList>

我想在下拉框更改时动态加载文本框,并将文本框中输入的值输入到结果文本框中。一旦我更改了下拉框,我就会得到texbox,但是当我单击按钮时,文本框消失了...我需要使用视图状态但是我在哪里以及如何使用它来使这段代码工作请帮助我

请找到我附带的代码。

 public partial class DropdowndynamicUserControl : UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void createtextboxes(int i)
    {
        DynPanel.Visible = true;
        for (int counter = 0; counter <= i; counter++)
        {
            TextBox tb = new TextBox();
            tb.Width = 150;
            tb.Height = 18;
            tb.TextMode = TextBoxMode.SingleLine;
            tb.ID = "TextBoxID" + (counter + 1).ToString();
            tb.Text = "EnterTitle" + counter;
            tb.Visible = true;
            tb.EnableViewState = true;
            DynPanel.Controls.Add(tb);
            DynPanel.Controls.Add(new LiteralControl("<br/>"));

        }


    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        int i;

        string selection = DropDownList1.SelectedItem.Value.ToString();

        if (selection == "1")
        {
            i = 1;
            createtextboxes(i);
        }
        else if (selection == "2")
        {
            i = 2;
            createtextboxes(i);
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        readtextboxes();

    }

    public void readtextboxes()
    {
        string x = string.Empty;
        for (int a = 0; a < DynPanel.Controls.Count; a++)
        {
            foreach (Control ctrl in DynPanel.Controls)
            {
                if (ctrl is TextBox)
                {
                    x = ((TextBox)ctrl).Text;
                }
            }
        }
    }


}

2 个答案:

答案 0 :(得分:2)

您正在将所有TextBox控件添加到其属性设置为Visible="false"的面板中。如果面板不可见,则不会渲染任何控件。

答案 1 :(得分:0)

您缺少base.CreateChildControls();

protected override void CreateChildControls()