Click here to Skip to main content
15,897,273 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
See more:
Hi I am creating textboxes dynamically,then insert values to each textbox generated,so I want to get the values on click event of a button but once a button is get fired, the values are not loaded in a page...
1.This is my Html markup:

ASP.NET
<form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtNumber" runat="server" ></asp:TextBox>
        <br />
        <asp:Button ID="btn" runat="server" Text="Generate" OnClick="GenerateTextBoxes_onClick" />
        <asp:Panel ID="pnlDate" runat="server"></asp:Panel>
    </div>
    <div>
        <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btn_Click" />
    </div>
</form>


And This is my code behind file I am using:
C#
protected void Page_Load(object sender, EventArgs e)
{

}

protected void GenerateTextBoxes_onClick(object sender, EventArgs e)
{
    int number = Convert.ToInt32(txtNumber.Text);
    string top = "";
    int left = 0;
    
    TextBox txt;
    Table tb = new Table();
    tb.ID = "tb1";
    TableRow tr = new TableRow();
    
    
    for (int i = 1; i <= number; i++)
    {
        txt = new TextBox();
        txt.ID = "textBox" + i.ToString();
        txt.Attributes.Add("runat", "server");
        txt.CssClass = "myDates";
        txt.Width = Unit.Pixel(240);
        txt.MaxLength = 1;
        txt.EnableViewState = true;
        txt.Style.Add(HtmlTextWriterStyle.Position, "relative");
        txt.Style[HtmlTextWriterStyle.Left] = left + "px";
        left += 5;
        
        TableCell tc = new TableCell();
        tc.Controls.Add(txt);
        tr.Controls.Add(tc);
        tb.Controls.Add(tr);
        Panel1.Controls.Add(txt);
    } // [edit] The brackets were not balanced, I'll assume this one belongs here?

    pnlDate.Controls.Add(tb);
}

public void btn_Click(object sender, EventArgs e)
{
    //GenerateTxtB();
    Table t = (Table)Page.FindControl("pnlDate").FindControl("tb1");
    TextBox textbox;
    
    foreach (TableRow tr in t.Rows)
    {
        foreach (TableCell tc in tr.Cells)
        {
            foreach (Control c in tc.Controls)
            {
                if (c.GetType() == typeof(TextBox))
                {
                    textbox = (TextBox)c;
                    Response.Write("TextBox Value is:" + textbox.Text + "<br/>");
                }
            }
        }
    }
}


Can some help me how to keep the values and then display them as I did with the response.write(...)
Posted
Updated 6-Sep-13 0:18am
v2

Hi,

dynamically created control value always get blank at time of postback. Use instead javascript event to get all textbox values.
 
Share this answer
 
Comments
El Dev 6-Sep-13 6:19am    
Hi Harshil_Raval

How can I get the values with javascript, please help by using my logic...
Harshil_Raval 6-Sep-13 6:28am    
<asp:Button ID="btnSave" runat="server" Text="Save" /> // remove onclick event

//call click event
<script type="text/javascript">
$(function () {
$('#<%= btnSave.ClientID %>').click(function () {
var listoftxts = $('#<%= pnlDate.ClientID %> input[type="text"]');
var values;
for (var i = 0; i < listoftxts.length; i++) {
values += 'txt ' + i + ' value = ' + listoftxts[i].value + '</br>';
}
alert(values);
});
});
</script>
El Dev 6-Sep-13 6:44am    
Thnks!
Hi you cannot get the dynamicaaly created control values when postback happens, one thing you can do is instead of creating dynamic text box in GenerateTextBoxes_onClick event,do it in page load since page load fires first on button click,u can get the values.
 
Share this answer
 
Check the below code i have modify some of the section (i.e. page load and generate control event. I think this will solve your problem

C#
protected void Page_Load(object sender, EventArgs e)
        {
            CreateCOntrols();
        }
        protected void GenerateTextBoxes_onClick(object sender, EventArgs e)
        {
            pnlDate.Controls.Clear();
            CreateCOntrols();
            
        }

        private void CreateCOntrols()
        {
            if (txtNumber.Text != "")
            {
                int number = Convert.ToInt32(txtNumber.Text);
                string top = "";
                int left = 0;

                TextBox txt;
                Table tb = new Table();
                tb.ID = "tb1";
                TableRow tr = new TableRow();


                for (int i = 1; i <= number; i++)
                {
                    txt = new TextBox();
                    txt.ID = "textBox" + i.ToString();
                    txt.Attributes.Add("runat", "server");
                    txt.CssClass = "myDates";
                    txt.Width = Unit.Pixel(240);
                    txt.MaxLength = 1;
                    txt.EnableViewState = true;
                    txt.Style.Add(HtmlTextWriterStyle.Position, "relative");
                    txt.Style[HtmlTextWriterStyle.Left] = left + "px";
                    left += 5;

                    TableCell tc = new TableCell();
                    tc.Controls.Add(txt);
                    tr.Controls.Add(tc);
                    tb.Controls.Add(tr);
                    //pnlDate.Controls.Add(txt);
                    pnlDate.Controls.Add(tb);
                }
            }
        }
        public void btn_Click(object sender, EventArgs e)
        {
            Table t = (Table)Page.FindControl("pnlDate").FindControl("tb1");
            TextBox textbox;

            foreach (TableRow tr in t.Rows)
            {
                foreach (TableCell tc in tr.Cells)
                {
                    foreach (Control c in tc.Controls)
                    {
                        if (c.GetType() == typeof(TextBox))
                        {
                            textbox = (TextBox)c;
                            Response.Write("TextBox Value is:" + textbox.Text + "");
                        }
                    }
                }
            }
        }
 
Share this answer
 
v2
Comments
yogen@softyoug 17-Dec-13 1:29am    
I'm having two dropdownlist and a button.
DropDownList1 , DropDownList2 and Button1

I have done this way.
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 1; i <= Convert.ToInt32(DropDownList1.SelectedItem.Text); i++)
{
TextBox Answer = new TextBox();
Answer.ID = "txt" + (i).ToString();
Answer.TextMode = TextBoxMode.MultiLine;
this.FindControl("panel1").Controls.Add(Answer);
}
}

protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= Convert.ToInt32(DropDownList1.SelectedItem.Text); i++)
{
OptionsTable objOpt = new OptionsTable();
objOpt.QID = Label5.Text;
objOpt.OptionNo = i;
TextBox txtObj = new TextBox();
txtObj = (TextBox)this.FindControl("Panel1").FindControl("txt" + i.ToString());
objOpt.Options = txtObj.Text;
OptionsTableManager.Save(objOpt);
}
}

Now when i click the button1 , it throws an error "txtObj is null".

so how to solve this problem.
dropdownlist1 autopostback is true.
C++
<a href=""></a>[<a href="" target="_blank">^</a>]<a href=""></a>[<a href="" target="_blank">^</a>]<a href=""></a>[<a href="" target="_blank">^</a>]<a href=""></a>[<a href="" target="_blank">^</a>]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900