《完成修改员工信息功能.ppt》由会员分享,可在线阅读,更多相关《完成修改员工信息功能.ppt(22页珍藏版)》请在三一办公上搜索。
1、Windows界面设计,安徽机电职业技术学院信息工程系,2,任务7:完成修改员工信息功能,学习目标:了解如何获取DataGridView选中行的数据。掌握如何在窗体间传递数据。进一步熟悉使用Command对象和Parameters对象操作数据库。,本任务在任务6“将员工信息保存到数据库”基础上继续进行。,3,7.1 设计“修改员工信息”窗体,由于“修改员工信息”窗体基本与“添加新员工”差不多,我们将FrmNewEmployee窗体复制过来,形成“副本FrmNewEmployee”。打开“副本FrmNewEmployee”窗体,将其名称修改为FrmEditEmployee,之后会有以下提示,记住
2、一定要选择“取消”。,4,7.1 设计“修改员工信息”窗体,之后,作以下修改:Title属性:修改员工信息删去 等控件删去 控件,5,7.2 获取DataGridView中当前选中的行,DataGridView控件的CurrentRow属性可以获取当前选中的行,其属性为DataGridViewRow。DataGridViewRow具有属性Cells,可以获取这一行的所有单元格集合。如Cells0可以获取第一个单元格对象(类型为DataGridViewCell)。DataGridViewCell具有Value属性,代表该单元格的值,类型为object。根据需要转换成该单元格的实际数据类型。,/获
3、取选定员工的编号int empID=(int)grdEmployee.CurrentRow.Cells0.Value;,6,7.3 将员工编号传递给“修改员工信息”窗体,用户动作为:选中“员工列表”窗体某个员工所在行点击“修改员工”按钮在“修改员工信息”窗体显示所选员工详细信息修改完成后,点击“修改”按钮员工信息保存回数据库,“员工列表”窗体更新数据因此,“修改员工信息”窗体只需要读取选定员工的信息。如何将“员工列表”的员工号传递给“修改员工信息”窗体呢?使用类成员,7,定义类成员,在FrmEditEmployee类,定义EmployeeID成员,该成员可以在类外部访问。如何定义?这样,可以在
4、“员工列表”窗体中按如下方式调用:,FrmEditEmployee frmEmp=new FrmEditEmployee();frmEmp.EmployeeID=empID;if(DialogResult.OK=frmEmp.ShowDialog()dsEmployee.Clear();BindGrid();,public partial class FrmEditEmployee:Form public int EmployeeID;,8,7.4 读取给定员工数据,接下来,启动“修改员工信息”窗体,需要先将员工信息从数据库中读取,并在窗体控件中显示。往“员工列表”窗体添加SqlCommand
5、控件,命名为cmdSelectEmp。配置SqlCommand控件的Connection属性为SqlConnection1。使用查询生成器配置SqlCommand控件的CommandText属性为:,SELECT EmployeeID,Name,LoginName,Password,Birthday,Email,DeptID,BasicSalary,Title,Telephone,SelfIntro,EmployeeLevel,PhotoImageFROM tblEmployeeWHERE(EmployeeID=EmpID),9,读取指定员工信息显示在窗体,由于这里只需要读取一条数据库刻录,因
6、此只需要使用SqlDataReader类实现就可以了。定义SqlDataReader对象打开相应的数据库连接给SqlCommand的参数对象进行赋值,System.Data.SqlClient.SqlDataReader dr=null;,cmdSelectEmp.Connection.Open();,cmdSelectEmp.ParametersEmpID.Value=EmployeeID;,10,读取指定员工信息显示在窗体,使用SqlDataReader对象读取数据使用SqlCommand的ExecuteReader方法读取数据到SqlDataReader对象将读取的数据显示在窗体的控件上
7、关闭数据库连接,dr=cmdSelectEmp.ExecuteReader();,if(dr.Read()txtName.Text=(string)drName;,cmdSelectEmp.Connection.Close();,11,*读取照片数据,读取照片数据时,SqlDataReader对象读的值是byte类型,需要转换为Image类型才能在PictureBox中显示。,byte photobyte=drPhotoImage as byte;if(photobyte!=null)System.IO.MemoryStream photo=new System.IO.MemoryStream
8、(photobyte);picPhoto.Image=new Bitmap(photo);,12,Code 1/4:读取员工信息完整代码,在FrmEditEmployee_Load事件中写入以下代码:,private void FrmEditEmployee_Load(object sender,EventArgs e)try daDepart.Fill(dsDepart,Depart);cmbDepart.DataSource=dsDepart.TablesDepart;cmbDepart.DisplayMember=DeptName;cmbDepart.ValueMember=DeptID
9、;catch MessageBox.Show(读取部门列表数据出错,可能无法修改员工信息。,错误,MessageBoxButtons.OK,MessageBoxIcon.Error);return;,13,Code 2/4:读取员工信息完整代码,System.Data.SqlClient.SqlDataReader dr=null;try cmdSelectEmp.Connection.Open();cmdSelectEmp.ParametersEmpID.Value=EmployeeID;dr=cmdSelectEmp.ExecuteReader();if(dr.Read()txtName.
10、Text=(string)drName;txtLogin.Text=(string)drLoginName;txtPassword.Text=(string)drPassword;txtBirthday.Text=(DateTime)drBirthday).ToString(yyyy年MM月dd日);txtEmail.Text=(string)drEMail;cmbDepart.SelectedValue=(int)drDeptid;txtTitle.Text=(string)drTitle;numLevel.Value=(int)drEmployeeLevel;,14,Code 3/4:读取
11、员工信息完整代码,numSalary.Value=(int)drBasicSalary;txtPhone.Text=drTelephone as string;txtSelfIntro.Text=drSelfIntro as string;byte photobyte=drPhotoImage as byte;if(photobyte!=null)System.IO.MemoryStream photo=new System.IO.MemoryStream(photobyte);picPhoto.Image=new Bitmap(photo);,15,Code 4/4:读取员工信息完整代码,c
12、atch MessageBox.Show(读取用户数据出错!);finally dr.Close();cmdSelectEmp.Connection.Close();,16,7.5 保存修改后的员工信息,保存修改信息需要使用Update语句。将SqlCommand控件拖放到窗体,命名为cmdUpdateEmp。Connection属性设置为:SqlConnection使用查询生成器配置CommandText属性为:,UPDATE tblEmployeeSET Name=Name,LoginName=LoginName,Password=Password,Birthday=Birthday,Em
13、ail=Email,DeptID=DeptID,BasicSalary=BasicSalary,Title=Title,Telephone=Telephone,SelfIntro=SelfIntro,EmployeeLevel=EmployeeLevel,PhotoImage=PhotoImageWHERE(EmployeeID=EmpID),17,7.5 保存修改后的员工信息,修改数据库记录的过程如下:打开数据库连接给SqlCommand各参数对象赋值执行SqlCommand对象的ExecuteNonquery方法关闭数据库连接,cmdUpdateEmp.Connection.Open();
14、,cmdUpdateEmp.ParametersEmpID.Value=EmployeeID;cmdUpdateEmp.ParametersName.Value=txtName.Text;,cmdUpdateEmp.ExecuteNonQuery();,cmdUpdateEmp.Connection.Close();,18,Code 1/4:修改员工信息完整代码,在BtnUpdate_Click事件中写入以下代码:,private void btkUpdate_Click(object sender,EventArgs e)if(!ValidateChildren()this.DialogRe
15、sult=DialogResult.None;return;cmdUpdateEmp.Connection.Open();cmdUpdateEmp.ParametersEmpID.Value=EmployeeID;cmdUpdateEmp.ParametersName.Value=txtName.Text;cmdUpdateEmp.ParametersLoginName.Value=txtLogin.Text;cmdUpdateEmp.ParametersPassword.Value=txtPassword.Text;cmdUpdateEmp.ParametersBirthday.Value=
16、Convert.ToDateTime(txtBirthday.Text);cmdUpdateEmp.ParametersEmail.Value=txtEmail.Text;,19,Code 2/4:修改员工信息完整代码,cmdUpdateEmp.ParametersDeptid.Value=cmbDepart.SelectedValue;cmdUpdateEmp.ParametersTitle.Value=txtTitle.Text;cmdUpdateEmp.ParametersEmployeeLevel.Value=numLevel.Value;cmdUpdateEmp.Parameters
17、BasicSalary.Value=numSalary.Value;cmdUpdateEmp.ParametersTelephone.Value=txtPhone.Text;cmdUpdateEmp.ParametersSelfINtro.Value=txtSelfIntro.Text;,20,Code 3/4:修改员工信息完整代码,/将图片数据转换成二进制 ImageConverter ic=new ImageConverter();byte photoByteArray=ic.ConvertTo(picPhoto.Image,typeof(byte)as byte;if(photoByte
18、Array!=null)cmdUpdateEmp.ParametersPhotoImage.Value=photoByteArray;else cmdUpdateEmp.ParametersPhotoImage.Value=Convert.DBNull;,21,Code 4/4:修改员工信息完整代码,try cmdUpdateEmp.ExecuteNonQuery();MessageBox.Show(成功修改员工信息。,成功,MessageBoxButtons.OK,MessageBoxIcon.Information);catch MessageBox.Show(修改员工信息错。,错误,Me
19、ssageBoxButtons.OK,MessageBoxIcon.Error);this.DialogResult=DialogResult.None;finally cmdUpdateEmp.Connection.Close();,22,7.6 实验,上机完成任务7,主要是以下内容:在任务6的基础上,在“EmployeeManagement”项目中设计“修改员工信息”窗体。使用SqlCommand对象和Parameters对象,在“修改员工窗体”时读取特定员工信息在窗体相应控件上显示。使用SqlCommand对象和Parameters对象,在单击“修改”按钮时,将修改过的信息保存到数据库。完成实验7实验报告。,