动态地添加文本框为空的按钮点击 [英] Dynamically added TextBoxes empty on button click

查看:166
本文介绍了动态地添加文本框为空的按钮点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我动态地添加文本框,当我点击提交按钮,有一个回传,我看不出值输入到文本框,所有的都上来了emtpy。这里的.aspx页面中... \\

 形式ID =form1的=服务器>
        < ASP:占位符ID =phFormContent=服务器>        < / ASP:占位符>
        < BR />< BR />
        < ASP:按钮的ID =btnAddForm=服务器文本=添加表的OnClick =btnAddForm_Click/>
        < ASP:按钮的ID =btnSubmitForms=服务器文本=提交表单的OnClick =btnSubmit_Click/>
    < /表及GT;

在这里......是我如何添加文本框窗体上点击btnAddForm ...

 保护无效btnAddForm_Click(对象发件人,EventArgs的发送)
        {
            //创建标签
            标签lblName =新的Label();
            lblName.Text =NAME:
            标签lblNumber =新的Label();
            lblNumber.Text =NUMBER;
            标签lblAddress =新的Label();
            lblAddress.Text =地址;
            标签lblCompany =新的Label();
            lblCompany.Text =公司;            //创建文本框
            文本框txtName的=新的TextBox();
            文本框txtNumber =新的TextBox();
            文本框txtAddress =新的TextBox();
            文本框txtCompany =新的TextBox();            //创建提交按钮
            按钮btnSubmit按钮=新按钮();
            btnSubmit.Text =提交;            //创建面板,添加控件
            面板pnlForm =新面板();
            pnlForm.Controls.Add(lblName);
            pnlForm.Controls.Add(txtName的);
            pnlForm.Controls.Add(新LiteralControl(< BR />< BR />中));
            pnlForm.Controls.Add(lblNumber);
            pnlForm.Controls.Add(txtNumber);
            pnlForm.Controls.Add(新LiteralControl(< BR />< BR />中));
            pnlForm.Controls.Add(lblAddress);
            pnlForm.Controls.Add(txtAddress);
            pnlForm.Controls.Add(新LiteralControl(< BR />< BR />中));
            pnlForm.Controls.Add(lblCompany);
            pnlForm.Controls.Add(txtCompany);
            pnlForm.Controls.Add(新LiteralControl(<小时/>中));
            pnlForm.Controls.Add(新LiteralControl(< BR />< BR />中));
            panels.Add(pnlForm);            的foreach(在面板控制面板)
            {
                phFormContent.Controls.Add(面板);
            }
        }

...这里就是我尝试提取字段每个面板添加...

 私有静态无效GetFormFields(控制panelControl)
   {
        的ControlCollection控制= panelControl.Controls;
        的foreach(在panelControl.Controls控制childControl)
        {
            如果(childControl.GetType()的ToString()==System.Web.UI.WebControls.TextBox)
            {
                TXT文本框= childControl为文本框;
                fields.Add(TXT);
            }
            其他
            {
                GetFormFields(childControl);
            }
        }
    }

面板和字段是静态的列表,每个包含四个字段面板。我通过GetFormFields个别面板的参考...

 私有静态列表<控制>面板=新的List<控制>();
        私人静态列表<&文本框GT;域=新的List<&文本框GT;();


解决方案

尝试动态地添加他们在 Page_Init 事件。通常情况下,这将确保他们通过回传坚持。如果你不能做到这一点,你必须看看$ P $通过存储在的ViewState

手动pserving其数据

I'm adding TextBoxes dynamically and when I click a submit button and have a postback, I can't see the values entered into the TextBoxes, all are coming up emtpy. Here's the .aspx page...\

form id="form1" runat="server">
        <asp:PlaceHolder ID="phFormContent" runat="server">

        </asp:PlaceHolder>
        <br /><br />
        <asp:Button ID="btnAddForm" runat="server" Text="Add Form" OnClick="btnAddForm_Click" />
        <asp:Button ID="btnSubmitForms" runat="server" Text="Submit Forms" OnClick="btnSubmit_Click" />
    </form>

...here's how I add the TextBoxes to the form on clicking btnAddForm...

protected void btnAddForm_Click(object sender, EventArgs e)
        {
            // Create Labels
            Label lblName = new Label();
            lblName.Text = "NAME:";
            Label lblNumber = new Label();
            lblNumber.Text = "NUMBER:";
            Label lblAddress = new Label();
            lblAddress.Text = "ADDRESS:";
            Label lblCompany = new Label();
            lblCompany.Text = "COMPANY:";

            // Create Text Boxes
            TextBox txtName = new TextBox();
            TextBox txtNumber = new TextBox();
            TextBox txtAddress = new TextBox();
            TextBox txtCompany = new TextBox();

            // Create submit button
            Button btnSubmit = new Button();
            btnSubmit.Text = "SUBMIT";

            // Create panel and add controls
            Panel pnlForm = new Panel();
            pnlForm.Controls.Add(lblName);
            pnlForm.Controls.Add(txtName);
            pnlForm.Controls.Add(new LiteralControl("<br /><br />"));
            pnlForm.Controls.Add(lblNumber);
            pnlForm.Controls.Add(txtNumber);
            pnlForm.Controls.Add(new LiteralControl("<br /><br />"));
            pnlForm.Controls.Add(lblAddress);
            pnlForm.Controls.Add(txtAddress);
            pnlForm.Controls.Add(new LiteralControl("<br /><br />"));
            pnlForm.Controls.Add(lblCompany);
            pnlForm.Controls.Add(txtCompany);
            pnlForm.Controls.Add(new LiteralControl("<hr />"));
            pnlForm.Controls.Add(new LiteralControl("<br /><br />"));
            panels.Add(pnlForm);

            foreach (Control panel in panels)
            {
                phFormContent.Controls.Add(panel);
            }
        }

...and here's how I try to extract the fields for each individual panel added...

private static void GetFormFields(Control panelControl)


   {
        ControlCollection controls = panelControl.Controls;
        foreach (Control childControl in panelControl.Controls)
        {
            if (childControl.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
            {
                TextBox txt = childControl as TextBox;
                fields.Add(txt);
            }
            else
            {
                GetFormFields(childControl);
            }
        }
    }

panels and fields are static List, each panel containing four fields. I pass GetFormFields an individual panel reference...

private static List<Control> panels = new List<Control>();
        private static List<TextBox> fields = new List<TextBox>();

解决方案

Try dynamically adding them on the Page_Init event. Typically this will ensure they persist through PostBack. If you can't do this, you'll have to look at preserving their data manually by storing in ViewState.

这篇关于动态地添加文本框为空的按钮点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆