protected void Add_Resource_Demand(object sender, EventArgs e) { try { DataTable data = new DataTable(); CPT_ResourceDemand resourceDemandDetails = new CPT_ResourceDemand(); List <CPT_ResourceMaster> lstdetils = new List <CPT_ResourceMaster>(); lstdetils = (List <CPT_ResourceMaster>)Session["UserDetails"]; resourceDemandDetails.RequestID = ClsCommon.GetRandomNumber(111111, 999999).ToString(); resourceDemandDetails.AccountID = Convert.ToInt32(AccountMasterID.SelectedValue); resourceDemandDetails.CityID = Convert.ToInt32(CityID.SelectedValue); resourceDemandDetails.OpportunityID = Convert.ToInt32(OpportunityID.SelectedValue); resourceDemandDetails.SalesStageID = Convert.ToInt32(SalesStageMasterID.SelectedValue); resourceDemandDetails.ProcessName = processName.Text.Trim(); resourceDemandDetails.DateOfCreation = DateTime.Now; resourceDemandDetails.DateOfModification = DateTime.Now; resourceDemandDetails.ResourceRequestBy = lstdetils[0].EmployeeMasterID; resourceDemandDetails.StatusMasterID = Convert.ToInt32(StatusMasterID.SelectedValue); resourceDemandDetails.PriorityID = Convert.ToInt32(PriorityID.SelectedValue); ResourceDemandBL insertResourceDemand = new ResourceDemandBL(); insertResourceDemand.Insert(resourceDemandDetails); if (ViewState["CurrentTable"] != null) { DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"]; DataRow drCurrentRow = null; if (dtCurrentTable.Rows.Count > 0) { drCurrentRow = dtCurrentTable.NewRow(); drCurrentRow["RowNumber"] = dtCurrentTable.Rows.Count + 1; //add new row to DataTable dtCurrentTable.Rows.Add(drCurrentRow); //Store the current data to ViewState for future reference ViewState["CurrentTable"] = dtCurrentTable; for (int i = 0; i < dtCurrentTable.Rows.Count - 1; i++) { //extract the DropDownList Selected Items DropDownList ddl = (DropDownList)GridviewResourceDetail.Rows[i].Cells[1].FindControl("ResourceTypeID"); //TextBox box1 = (TextBox)GridviewResourceDetail.Rows[i].Cells[1].FindControl("TextBox1"); TextBox box2 = (TextBox)GridviewResourceDetail.Rows[i].Cells[2].FindControl("NoOfResources"); dtCurrentTable.Rows[i]["ResourceTypeID"] = ddl.SelectedValue; dtCurrentTable.Rows[i]["NoOfResources"] = box2.Text.Trim(); ListBox ddl1 = (ListBox)GridviewResourceDetail.Rows[i].Cells[3].FindControl("SkillID"); // Update the DataRow with the DDL Selected Items string message = ""; foreach (var z in ddl1.GetSelectedIndices()) { message += ddl1.Items[z].Value + ","; } message = message.Remove(message.Length - 1).Trim(); dtCurrentTable.Rows[i]["SkillID"] = message; Skill = message.Split(','); id.Add(Skill); //dtCurrentTable.Rows[i]["SkillID"] = id; TextBox box3 = (TextBox)GridviewResourceDetail.Rows[i].Cells[2].FindControl("StartDate"); TextBox box4 = (TextBox)GridviewResourceDetail.Rows[i].Cells[2].FindControl("EndDate"); dtCurrentTable.Rows[i]["StartDate"] = box3.Text.Trim(); dtCurrentTable.Rows[i]["EndDate"] = box4.Text.Trim(); } //Rebind the Grid with the current data to reflect changes GridviewResourceDetail.DataSource = dtCurrentTable; GridviewResourceDetail.DataBind(); } data = dtCurrentTable; } CPT_ResourceDetails demandDetails = new CPT_ResourceDetails(); ResourceDetailsBL insertDemandDetails = new ResourceDetailsBL(); for (int i = 0; i < data.Rows.Count - 1; i++) { demandDetails.RequestID = resourceDemandDetails.RequestID; demandDetails.ResourceTypeID = Convert.ToInt32(data.Rows[i]["ResourceTypeID"]); demandDetails.NoOfResources = Convert.ToInt32(data.Rows[i]["NoOfResources"]); demandDetails.SkillID = data.Rows[i]["SkillID"].ToString().Trim(); demandDetails.StartDate = Convert.ToDateTime(data.Rows[i]["StartDate"]); demandDetails.EndDate = Convert.ToDateTime(data.Rows[i]["EndDate"]); insertDemandDetails.Insert(demandDetails); } Response.Redirect("ResourceDemand.aspx"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }