I have a front page (EmployeeDetails) with some text boxes and a listbox that will populate after adding text values. I need to have the listbox stay populated as I navigate to another page (SpecificDetails) that shows the details of the selected listbox item. I the have added a button on the second page (SpecificDetails) that is supposed to return to a first page (EmployeeDetails while having the data from the first page still showing.
Here is the code for each: Employees Details
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class EmployeeDetails : System.Web.UI.Page
{
private List<Employee> employees;
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
employees = (List<Employee>)Session["emp"];
}
else
{
employees = new List<Employee>();
if (employees != null)
{
updateListBox();
int sNum = -1;
Int32.TryParse(Request.Params["Social"], out sNum);
if (sNum >= 0)
{
lstEmployees.SelectedIndex = sNum;
}
}
else employees = new List<Employee>();
}
}
protected void Page_PreRender(Object sender, EventArgs e)
{
Session["emp"] = employees;
}
protected void updateListBox()
{
lstEmployees.Items.Clear();
foreach (Employee e in employees)
{
lstEmployees.Items.Add(e.Social);
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
int snum;
int ynum;
if ((Int32.TryParse(txtSalary.Text, out snum) && (Int32.TryParse(txtCost.Text, out ynum)
&& txtName.Text.Length > 0)))
{
employees.Add(new Employee(txtName.Text, snum, ynum));
updateListBox();
lblError.Text = "";
lblError.Text = employees.Count().ToString();
}
else
lblError.Text = "Enter valid SSN Number, Year of Hire, Year of Employment End.";
txtName.Text = "";
txtSalary.Text = "";
txtCost.Text = "";
}
protected void btnRemove_Click(object sender, EventArgs e)
{
if (lstEmployees.SelectedIndex == -1)
lblError.Text = "No Employee Selected.";
else
{
Employee emp = employees[lstEmployees.SelectedIndex];
employees.RemoveAt(lstEmployees.SelectedIndex);
updateListBox();
lblError.Text = "Employee: " + emp.Social;
lblError.Text += "<br />has been removed. ";
}
}
protected void btnRemoveAll_Click(object sender, EventArgs e)
{
employees.Clear();
updateListBox();
lblError.Text = "All Employees Removed.";
}
protected void cmdMoreInfo_Click(object sender, EventArgs e)
{
if (lstEmployees.SelectedIndex == -1)
{
lblError.Text = "No employee selected.";
}
else
Server.Transfer("SpecificEmployee.aspx?emp=" + lstEmployees.SelectedIndex, true);
}
public string AllEmp
{
get { return txtName.Text + "<br />" + txtSalary.Text + "<br />"+ txtCost.Text; }
}
}
Here is the second page: (SpecificDetails)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class SpecificEmployee : System.Web.UI.Page
{
private List<Employee> employees;
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
employees = new List<Employee>();
employees = (List<Employee>)Session["emp"];
int i = -1;
Int32.TryParse(Request.Params["emp"], out i);
Employee emp;
emp = employees[i];
// lblEmployee.Text += "Here is Your Entry: " + prevPage.AllEmp + "<br />";
lblEmployee.Text += "Employee: " + emp.getDisplayText() +
"<br />";
}
}
protected void cmdReturn_Click(object sender, EventArgs e)
{
Response.Redirect("EmployeeDetails.aspx?AllEmp" );
}
}