954,580 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Maintain control Values after PostBack

have to create a number of controls equal to a number entered in a textbox by the user. I created a web user control, which has a radio button list. Then when the user press a Submit button, I want to check the selected values of the controls created dynamically, but the problem is that they are lost on post-back.

I managed with the aid of an article I read on the net ( http://www.tgreer.com/aspnet_html_04.html ), to maintain the controls created dynamically after post back, but still one problem I have is the values the user enters in the dynamically created controls are lost after post back.

Here is my code:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
 
publicpartialclassquestions : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState.Add("mode", "0");
}
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
if (ViewState["mode"].ToString() == "1")
{
if (TextBox1.Text != "")
{
for (int i = 0; i < int.Parse(TextBox1.Text); i++)
{
CreateControls(i);
}
}
}
}
///<summary>
/// Calls the function "CreateControls" which creates a number of controls based on the number eneterd in the TextBox.
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void BTN_Submit_Click(object sender, EventArgs e)
{
if (TextBox1.Text != "")
{
for (int i = 0; i < int.Parse(TextBox1.Text); i++)
{
CreateControls(i);
}
}
}
///<summary>
/// Checks the values entered by the user and calculates the total result.
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void BTN_Result_Click(object sender, EventArgs e)
{
if (TextBox1.Text != "")
{
for (int i = 0; i < int.Parse(TextBox1.Text); i++)
{
CreateControls(i);
}
}
ViewState.Add("mode", "1");
//check results of entered by user
/*int result = 0;
for (int i = 0; i < int.Parse(TextBox1.Text); i++)
{
bool ans = ((ASP.mcq_ascx)(this.Q_PlaceHolder.FindControl("newc" + i))).CheckAnswer();
if (ans)
{
result++;
}
}
Response.Write(result);*/
}
///<summary>
/// Creates controls dynamically to the page.
///</summary>
protected void CreateControls(int i)
{
ASP.mcq_ascx newc = new ASP.mcq_ascx();
newc.ID = "newc" + i.ToString();
this.Q_PlaceHolder.Controls.Add(newc);
}
}
Adzz
Newbie Poster
3 posts since Jul 2006
Reputation Points: 10
Solved Threads: 0
 

Hmm, i replyed to a post exactly like this somewhere else on this forum.
Anyways use Request.Form["controlID"] to get the value after a postback.

plazmo
Posting Whiz in Training
207 posts since Aug 2005
Reputation Points: 23
Solved Threads: 16
 

Thank you for the post.I am still facing some problems.Onclick of a link button I am generating a row of the table containing 4 controls dynamically.I am able to generate two rows of controls dynamically but when I click on the Add link button which is created dynamically for the thrid time, I am getting commas in the textboxes of firstrow.

pls suggest me a solution for this

swati.mehta
Newbie Poster
1 post since Feb 2010
Reputation Points: 10
Solved Threads: 0
 

It is Simple. Add the grid and the Button inside an Update Panel and every time you click the Button you will not loose the values of the controls that you created dynamically.


kind Regards

Vuyiswa Maseko

vuyiswamb
Posting Whiz
312 posts since Mar 2007
Reputation Points: 31
Solved Threads: 14
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You