Click here to Skip to main content
15,911,785 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
C#
protected void btnAddAnswerRow_Click(object sender, EventArgs e)
        {
            rptPossibleAnswer.DataSource = PossibleAnswer();
            rptPossibleAnswer.DataBind();
        }

        public DataTable PossibleAnswer()
        {
            if (ViewState["Answers"] == null)
            {
                dt.Columns.Add("Name");

                DataColumn DocId = new DataColumn();
                DocId.ColumnName = "ID";
                DocId.DataType = System.Type.GetType("System.Int32");
                DocId.AutoIncrement = true;
                DocId.AutoIncrementSeed = 1;
                DocId.AutoIncrementStep = 1;
                dt.Columns.Add(DocId);
            }
            else
            {
                dt = (DataTable)ViewState["Answers"];
            }

            //test code for handle view state for textboxes values

            string strPossibleAnswer = "";
            foreach (RepeaterItem item in rptPossibleAnswer.Items)
            {
                TextBox txt = (TextBox)item.FindControl("txtPossibleAnswers");
                if (txt != null)
                {
                    if (txt.Text != "")
                    {
                        strPossibleAnswer = strPossibleAnswer + "," + txt.Text;
                    }
                }
            }
            ViewState["BeforePostBackAnswer"] = strPossibleAnswer;
            //end test code

            
            DataRow dr = dt.NewRow();
            dr["Name"] = "";
            dt.Rows.Add(dr);
            ViewState["Answers"] = dt;
            return dt;
        }



this is my code.
i am managing the previous data into my view state ViewState["BeforePostBackAnswer"].

my issue is this
i dont know that how can i papulate the data into my dynamically generated textboxs.

because when my user click on add textbox button
it get postback
and my previous data removed.

so for that i save it in ViewState["BeforePostBackAnswer"]
but i dont know how to again papulate the ViewState["BeforePostBackAnswer"] data into text boxes

please help me
Posted

Hi,
In the above code, the ViewState["BeforePostBackAnswer"] will be overwritten every time new textbox is added.
So you should probably move this line of code to another place so that it will execute only once while initializing the repeater.

Hope this helps your query.
 
Share this answer
 
Comments
prince_rumeel 7-Mar-13 4:46am    
<pre lang="c#">protected void btnAddAnswerRow_Click(object sender, EventArgs e)
{
rptPossibleAnswer.DataSource = PossibleAnswer();
rptPossibleAnswer.DataBind();
}

public DataTable PossibleAnswer()
{
if (ViewState["Answers"] == null)
{
dt.Columns.Add("Name");

DataColumn DocId = new DataColumn();
DocId.ColumnName = "ID";
DocId.DataType = System.Type.GetType("System.Int32");
DocId.AutoIncrement = true;
DocId.AutoIncrementSeed = 1;
DocId.AutoIncrementStep = 1;
dt.Columns.Add(DocId);
}
else
{
dt = (DataTable)ViewState["Answers"];
}

DataRow dr = dt.NewRow();
dr["Name"] = "";
dt.Rows.Add(dr);
ViewState["Answers"] = dt;
return dt;
}

public void oldState()
{
string strPossibleAnswer = "";
foreach (RepeaterItem item in rptPossibleAnswer.Items)
{
TextBox txt = (TextBox)item.FindControl("txtPossibleAnswers");
if (txt != null)
{
if (txt.Text != "")
{
strPossibleAnswer = strPossibleAnswer + "," + txt.Text;
}
}
}
ViewState["BeforePostBackAnswer"] = strPossibleAnswer;

}</pre>

i do this now
i make a saperate method

i want that when it click on addnew text box.
on page load it show previous data which is in the viewstate.

i dont know how to do this.

plz help me
Sampath Sridhar 7-Mar-13 5:11am    
Modify the method as follows:

<pre lang="c#">
public DataTable PossibleAnswer() { if (ViewState["BeforePostBackAnswer"] == null) { dt.Columns.Add("Name"); DataColumn DocId = new DataColumn(); DocId.ColumnName = "ID"; DocId.DataType = System.Type.GetType("System.Int32"); DocId.AutoIncrement = true; DocId.AutoIncrementSeed = 1; DocId.AutoIncrementStep = 1; dt.Columns.Add(DocId); } else { dt = (DataTable)ViewState["BeforePostBackAnswer"]; } DataRow dr = dt.NewRow(); dr["Name"] = ""; dt.Rows.Add(dr); ViewState["BeforePostBackAnswer"] = dt; return dt; }
</pre>

This should work.
This link help me
and finaly i got solution of my problem
thanks you all for help

http://geekswithblogs.net/QuandaryPhase/archive/2008/10/23/asp.net-alternatives-to-dynamic-controls---part-2.aspx[^]
 
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