Когда отображается 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;
        }
    }
}
Другие вопросы по тегам