日期:2014-05-18  浏览次数:20483 次

高手们,帮帮忙,解救解救!!
C# code

[color=#FF6600]EmployeeUI窗体:[/color]
 EmployeeInfo[] empInfo;
private void Form1_Load(object sender, EventArgs e)
        {
            ShowAllRecords();
        }

private void ShowAllRecords()
        {
            this.Cursor = Cursors.WaitCursor;
            EmployeeDB emp = new EmployeeDB();
            empInfo = emp.GetAllEmployee();
            int recPos = this.BindingContext[empInfo].Position;
            if (empInfo != null)
            {
                txtEmployeeId.Text = empInfo[recPos].EmployeeId.ToString();
                txtFirstName.Text = empInfo[recPos].FirstName;
                txtLastName.Text = empInfo[recPos].LastName;
            }

[color=#FF6600]EmployeeDAL类库下的EmployeeDB类:[/color]
public EmployeeInfo[] GetAllEmployee()
        {
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "GetAllEmployee";

            ArrayList arrEmp = new ArrayList();
            try
            {
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                EmployeeInfo emp;
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        emp = new EmployeeInfo((int)dr["EmployeeId"], (string)dr["FirstName"], (string)dr["LastName"]);
                        arrEmp.Add(emp);
                    }
                }
                else
                    arrEmp = null;
                dr.Close();
                conn.Close();
                return (EmployeeInfo[])arrEmp.ToArray(typeof(EmployeeInfo));
            }

[color=#FF6600]EmployeeModel类库下的EmployeeInfo类:[/color]
public class EmployeeInfo
    {
        public EmployeeInfo()
        {
            //构造函数
         }

        private int employeeId;
        private string firstName;
        private string lastName;

        public int EmployeeId
        {
            get{return employeeId;}
            set{employeeId = value;}
        }

        public string FirstName
        {
            get{return firstName;}
            set{firstName = value;}
        }

        public string LastName
        {
            get{return lastName;}
            set{lastName = value;}
        }

        public EmployeeInfo(int employeeId, string firstName, string lastName)
        {
            this.employeeId = employeeId;
            this.firstName = firstName;
            this.lastName = lastName;
        }
    }



原本只想部分代码上来的,怕有人叫我发完整的上来或者怕部分不理解,所以发多了少少,其实这代码不算,懂得的人一看就明白。
我在群里问过几个人,意见不一致的,所以上来看看大家是怎么说的,希望大家帮帮我。

问题1:Model层,即是实体层,多定义一个带参数的构造函数,像这样的构造函数有什么作用或目的?(我见有不少案例都是这样的)
问题2:public EmployeeInfo[] GetAllEmployee()中的EmployeeInfo[]是一个类返回类型吧,有什么作用?
问题3:emp = new EmployeeInfo((int)dr["EmployeeId"], (string)dr["FirstName"], (string)dr["LastName"]);解释一下这一条代码,最好说一下那三个字段是怎么传递和保存的?
问题4:ShowAllRecords()方法里的empInfo=emp.GetAllEmployee(),当函执行到这里时,empInfo保存了什么值?

你的回答不仅帮到我,可能也帮到很多路过这里的新手们,如果分不够再加分。

------解决方案--------------------
问题1:Model层,即是实体层,多定义一个带参数的构造函数,像这样的构造函数有什么作用或目的?(我见有不少案例都是这样的) 


EmployeeInfo employeeInfo=new EmployeeInfo(1,"Smith","David");

这样就直接给EmployeeInfo 的EmployeeId FirstName LastName三个属性赋值了,就不用
employeeInfo.EmployeeId=1 这样赋值了

问题2:public EmployeeInfo[] GetAllEmployee()中的EmployeeInfo[]是一个类返回类型吧,有什么作用? 

返回EmployeeInfo一个集合,是EmployeeInfo类型的数组,可以直接绑定到GridView的DataSource
Gridview.DataSource=GetAllEmployee();
Gridview.DataBind();


问题3:emp = new EmployeeInfo((int)dr["EmployeeId"], (string)