0

我有一个首页 (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; }
    }


}

这是第二页:(具体细节)

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" );

    }

}
4

1 回答 1

0
 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;
        }
    }
}
于 2018-04-23T12:34:45.720 回答