Click here to Skip to main content
15,912,400 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello,
I am generating dynamic textboxes and dropdownlist and bind it in gridview by maintaining its viewstate. After clicking save button, it redirects to another page where i have given option of edit. On clicking edit button, user redirects to edit page where I generate dynamic textboxes and dropdownlist but unable to bind dropdown selected value.

Here is my code:

C#
static int Empid;
static int m;
string drop;
protected void Page_Load(object sender, EventArgs e)
{
   if (Request.QueryString["edit"] != null)
   {
      if (!IsPostBack)
      {
         SetInitialRow();
      }
   }
}

private void SetInitialRow()
{
   int k;
   input.Storeid = int.Parse(Request.QueryString["edit"]);
   purchaseoutput = purchaseorderedit.Execute(input);
   k = purchaseoutput.Supplierid;
   datalist_activestore.DataSource = purchaseoutput.DtDepartment;
   datalist_activestore.DataBind();

   DataTable dt = new DataTable();
   DataRow dr = null;
   dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
   dt.Columns.Add(new DataColumn("Column1", typeof(string)));
   dt.Columns.Add(new DataColumn("Column2", typeof(string)));
   dt.Columns.Add(new DataColumn("Column3", typeof(string)));
   dt.Columns.Add(new DataColumn("Column4", typeof(string)));
   dt.Columns.Add(new DataColumn("Column5", typeof(string)));

   int i = 0;

   foreach (DataListItem li in datalist_activestore.Items)
   {
      dr = dt.NewRow();
      dr["RowNumber"] = i + 1;
      Label item_name = (Label)li.FindControl("lbl_itemname");
      DropDownList drp = (DropDownList)li.FindControl("dropdownlist_storeitem");
      // drp.SelectedItem.Text = item_name.Text.ToString();

      Label quantity = (Label)li.FindControl("lbl_quantity");
      Label discount = (Label)li.FindControl("lbl_discount");
      Label tax = (Label)li.FindControl("lbl_tax");

      Label price = (Label)li.FindControl("lbl_price");

      dt.Rows.Add(dr);

      ViewState["CurrentTable"] = dt;

      Gridview1.DataSource = dt;
      Gridview1.DataBind();

      TextBox box2 = (TextBox)Gridview1.Rows[i].Cells[2].FindControl("TextBox2");
      TextBox box3 = (TextBox)Gridview1.Rows[i].Cells[3].FindControl("TextBox3");
      TextBox box4 = (TextBox)Gridview1.Rows[i].Cells[4].FindControl("TextBox4");
      TextBox box5 = (TextBox)Gridview1.Rows[i].Cells[4].FindControl("TextBox5");
             
      box2.Text = quantity.Text;
      // dr["Column2"] = box2.Text;
      box3.Text = discount.Text;
      box4.Text = tax.Text;
      box5.Text = price.Text;
      // ddl.Text = item_name.Text;
      purchaseoutput = purchaseoredr.Execute(input);

      DropDownList ddl = (DropDownList)Gridview1.Rows[i].Cells[1].FindControl("DROPDOWNLIST1");

      ddl.DataSource = getitemoutput.DtCategory;
      ddl.DataTextField = "item_name";
      ddl.DataValueField = "store_item_id";
      ddl.DataBind();
      ddl.Items.Insert(0, item_name.Text);
      drop = item_name.Text;

      m = i;
      setrow();
      i++;
   }
}
      
private void setrow()
{
   if (ViewState["CurrentTable"] != null)
   {
      DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
      DataRow drCurrentRow = null;

      if (dtCurrentTable.Rows.Count > 0)
      {
         DropDownList box1 = (DropDownList)Gridview1.Rows[m].Cells[1].FindControl("DROPDOWNLIST1");
         // box1.SelectedItem.Text = drop;
         TextBox box2 = (TextBox)Gridview1.Rows[m].Cells[2].FindControl("TextBox2");
         TextBox box3 = (TextBox)Gridview1.Rows[m].Cells[3].FindControl("TextBox3");
         TextBox box4 = (TextBox)Gridview1.Rows[m].Cells[4].FindControl("TextBox4");
         TextBox box5 = (TextBox)Gridview1.Rows[m].Cells[4].FindControl("TextBox5");

         m = m + 1;

         dtCurrentTable.Rows[m - 1]["Column1"] = box1.Text;
         dtCurrentTable.Rows[m - 1]["Column2"] = box2.Text;
         dtCurrentTable.Rows[m - 1]["Column3"] = box3.Text;
         dtCurrentTable.Rows[m - 1]["Column4"] = box4.Text;
         dtCurrentTable.Rows[m - 1]["Column5"] = box5.Text;
      }

      ViewState["CurrentTable"] = dtCurrentTable;

      Gridview1.DataSource = dtCurrentTable;
      Gridview1.DataBind();
   }
   else
   {
      Response.Write("ViewState is null");
   }

   //Set Previous Data on Postbacks
   setdata();
}

private void setdata()
{
   try{
      purchaseoutput = purchaseoredr.Execute(input);

      int rowIndex = 0;
      if (ViewState["CurrentTable"] != null)
      {
         DataTable dt = (DataTable)ViewState["CurrentTable"];
         if (dt.Rows.Count > 0)
         {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
               DropDownList box1 = (DropDownList)Gridview1.Rows[rowIndex].Cells[1].FindControl("ddoffence");
               box1.DataSource = getitemoutput.DtCategory;
               box1.DataTextField = "item_name";
               box1.DataValueField = "store_item_id";
               box1.DataBind();

               box1.Items.Insert(0, "Select store");
                   
               // box1.Items.Insert(0, drop);
               // SetInitialRow();
               // box1.SelectedItem.Text = drop;
               TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
               TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
               TextBox box4 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox4");
               TextBox box5 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox5");

               box1.Text = dt.Rows[i]["Column1"].ToString();
               box2.Text = dt.Rows[i]["Column2"].ToString();
               box3.Text = dt.Rows[i]["Column3"].ToString();
               box4.Text = dt.Rows[i]["Column4"].ToString();
               box5.Text = dt.Rows[i]["Column5"].ToString();
                 
               rowIndex++;
            }
         }
     }
  }
  catch (Exception ex)
  {
     if (ex.Message.ToString() == "Thread was being aborted.")
     {
         // nothing 
      }
      else
      {
         #region for exception handling
         string logMessage = "\n\n";
         logMessage += "Error time: " + DateTime.Now.ToString() + "\n";
         logMessage += "Error Page: " + HttpContext.Current.Request.Url.ToString() + "\n";
         logMessage += "Error method: " + "setdata()" + "\n";
         logMessage += "Error Message: " + ex.Message.ToString() + "\n";
         logMessage += "\n\n";
         File.AppendAllText(Server.MapPath("~/Admin/ErrorHandling/Errorfile.txt"), logMessage);

         #endregion
         #region  send it to message
         Exceptionhandlingmail usertomail = new Exceptionhandlingmail();
         UserMailInput inputmail = new UserMailInput();
         inputmail.Exception = logMessage;
         usertomail.Exceptionhandling(inputmail);
         Response.Redirect("~/Error.aspx");
         #endregion
      }
   }
}


private void SetPreviousData()
{
   int rowIndex = 0;
   if (ViewState["CurrentTable"] != null)
   {
      DataTable dt = (DataTable)ViewState["CurrentTable"];
      if (dt.Rows.Count > 0)
      {
         for (int i = 0; i < dt.Rows.Count; i++)
         {
            DropDownList box1 = (DropDownList)Gridview1.Rows[rowIndex].Cells[1].FindControl("DROPDOWNLIST1");
            box1.DataSource = getitemoutput.DtCategory;
            box1.DataTextField = "item_name";
            box1.DataValueField = "store_item_id";
            box1.DataBind();
            box1.Items.Insert(0, "Select store");
            TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
            TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
            TextBox box4 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox4");
            TextBox box5 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox5");

            box1.Text = dt.Rows[i]["Column1"].ToString();
            box2.Text = dt.Rows[i]["Column2"].ToString();
            box3.Text = dt.Rows[i]["Column3"].ToString();
            box4.Text = dt.Rows[i]["Column4"].ToString();
            box5.Text = dt.Rows[i]["Column5"].ToString();

            rowIndex++;
         }
      }
   }
}


[edit]Code block added and indexation changed to improve readability[/edit]
Posted
Updated 3-Dec-13 22:21pm
v3
Comments
Karthik_Mahalingam 4-Dec-13 4:40am    
Good, better u could have posted your whole project...

It doesnt make sense that ,posting many lines of code..

Please make your question simple and easy to understand.

if you want to add some code block to your question.. add the portion where u r facing issues..

no use of putting all the lines..

Pls add your code in c# code block

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