Когда отображается CrossPage1.aspx, мне нужно иметь тот же выбор в списке, прежде чем переход на страницу CrossPage2 все еще должен быть выбран
У меня есть первая страница (EmployeeDetails) с некоторыми текстовыми полями и списком, который будет заполняться после добавления текстовых значений. Мне нужно, чтобы список оставался заполненным, когда я перехожу на другую страницу (SpecificDetails), которая показывает детали выбранного элемента списка. Я добавил кнопку на второй странице (SpecificDetails), которая должна вернуться на первую страницу (EmployeeDetails), при этом данные с первой страницы все еще отображаются.
Вот код для каждого: Сведения о сотрудниках
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; }
}
}
Вот вторая страница: (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" );
}
}
1 ответ
if (this.IsPostBack)
{
employees = (List<Employee>)Session["emp"];
}
будет истинным, только если вы пришли с самой страницы EmployeeDetails.
однако это должно работать для ваших EmployeeDetails:
protected void Page_Load(object sender, EventArgs e)
{
employees = (List<Employee>)Session["emp"];
if(employees == null)
{
employees = new List<Employee>();
}
else
{
updateListBox();
int sNum = -1;
Int32.TryParse(Request.Params["Social"], out sNum);
if (sNum >= 0)
{
lstEmployees.SelectedIndex = sNum;
}
}
}