7.完成修改员工信息功能.ppt_第1页
7.完成修改员工信息功能.ppt_第2页
7.完成修改员工信息功能.ppt_第3页
7.完成修改员工信息功能.ppt_第4页
7.完成修改员工信息功能.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Windows界面设计,安徽机电职业技术学院信息工程系 汪 学 文 wxwOOP 2010年12月,2,任务7:完成修改员工信息功能,学习目标: 了解如何获取DataGridView选中行的数据。 掌握如何在窗体间传递数据。 进一步熟悉使用Command对象和Parameters对象操作数据库。,本任务在任务6“将员工信息保存到数据库”基础上继续进行。,3,7.1 设计“修改员工信息”窗体,由于“修改员工信息”窗体基本与“添加新员工”差不多,我们将FrmNewEmployee窗体复制过来,形成“副本FrmNewEmployee”。 打开“副本FrmNewEmployee”窗体,将其名称修改为F

2、rmEditEmployee, 之后会有以下提示,记住一定要选择“取消”。,4,7.1 设计“修改员工信息”窗体,之后,作以下修改: Title属性:修改员工信息 删去 等控件 删去 控件,5,7.2 获取DataGridView中当前选中的行,DataGridView控件的CurrentRow属性可以获取当前选中的行,其属性为DataGridViewRow。 DataGridViewRow具有属性Cells,可以获取这一行的所有单元格集合。如Cells0可以获取第一个单元格对象(类型为DataGridViewCell)。 DataGridViewCell具有Value属性,代表该单元格的值,

3、类型为object。根据需要转换成该单元格的实际数据类型。,/ 获取选定员工的编号 int empID = (int)grdEmployee.CurrentRow.Cells0.Value;,6,7.3 将员工编号传递给“修改员工信息”窗体,用户动作为: 选中“员工列表”窗体某个员工所在行 点击“修改员工”按钮 在“修改员工信息”窗体显示所选员工详细信息 修改完成后,点击“修改”按钮 员工信息保存回数据库,“员工列表”窗体更新数据 因此,“修改员工信息”窗体只需要读取选定员工的信息。 如何将“员工列表”的员工号传递给“修改员工信息”窗体呢? 使用类成员,7,定义类成员,在FrmEditEmpl

4、oyee类,定义EmployeeID成员,该成员可以在类外部访问。如何定义? 这样,可以在“员工列表”窗体中按如下方式调用:,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 读取给定员工数据,接下来,启

5、动“修改员工信息”窗体,需要先将员工信息从数据库中读取,并在窗体控件中显示。 往“员工列表”窗体添加SqlCommand控件,命名为cmdSelectEmp。 配置SqlCommand控件的Connection属性为SqlConnection1。 使用查询生成器配置SqlCommand控件的CommandText属性为:,SELECT EmployeeID, Name, LoginName, Password, Birthday, Email, DeptID, BasicSalary, Title, Telephone, SelfIntro, EmployeeLevel, PhotoImage

6、 FROM tblEmployee WHERE (EmployeeID = EmpID),9,读取指定员工信息显示在窗体,由于这里只需要读取一条数据库刻录,因此只需要使用SqlDataReader类实现就可以了。 定义SqlDataReader对象 打开相应的数据库连接 给SqlCommand的参数对象进行赋值,System.Data.SqlClient.SqlDataReader dr = null;,cmdSelectEmp.Connection.Open();,cmdSelectEmp.ParametersEmpID.Value = EmployeeID;,10,读取指定员工信息显示在窗

7、体,使用SqlDataReader对象读取数据 使用SqlCommand的ExecuteReader方法读取数据到SqlDataReader对象 将读取的数据显示在窗体的控件上 关闭数据库连接,dr = cmdSelectEmp.ExecuteReader();,if (dr.Read() txtName.Text = (string)drName; ,cmdSelectEmp.Connection.Close();,11,*读取照片数据,读取照片数据时,SqlDataReader对象读的值是byte类型,需要转换为Image类型才能在PictureBox中显示。,byte photobyte

8、 = drPhotoImage as byte; if (photobyte != null) System.IO.MemoryStream photo = new System.IO.MemoryStream(photobyte); picPhoto.Image = new Bitmap(photo); ,12,Code 1/4: 读取员工信息完整代码,在FrmEditEmployee_Load事件中写入以下代码:,private void FrmEditEmployee_Load(object sender, EventArgs e) try daDepart.Fill(dsDepart,

9、 Depart); cmbDepart.DataSource = dsDepart.TablesDepart; cmbDepart.DisplayMember = DeptName; cmbDepart.ValueMember = DeptID; catch MessageBox.Show(读取部门列表数据出错,可能无法修改员工信息。, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error); return; ,13,Code 2/4: 读取员工信息完整代码,System.Data.SqlClient.SqlDataReader dr = null; t

10、ry cmdSelectEmp.Connection.Open(); cmdSelectEmp.ParametersEmpID.Value = EmployeeID; dr = cmdSelectEmp.ExecuteReader(); if (dr.Read() txtName.Text = (string)drName; txtLogin.Text = (string)drLoginName; txtPassword.Text = (string)drPassword; txtBirthday.Text = (DateTime)drBirthday) .ToString(yyyy年MM月d

11、d日); txtEmail.Text = (string)drEMail; cmbDepart.SelectedValue = (int)drDeptid; txtTitle.Text = (string)drTitle; numLevel.Value = (int)drEmployeeLevel; ,14,Code 3/4: 读取员工信息完整代码,numSalary.Value = (int)drBasicSalary; txtPhone.Text = drTelephone as string; txtSelfIntro.Text = drSelfIntro as string; byte

12、 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: 读取员工信息完整代码,catch MessageBox.Show(读取用户数据出错!); finally dr.Close(); cmdSelectEmp.Connection.Close(); ,16,7.5 保存修改后的员工信息,保存修改信

13、息需要使用Update语句。 将SqlCommand控件拖放到窗体,命名为cmdUpdateEmp。 Connection属性设置为:SqlConnection 使用查询生成器配置CommandText属性为:,UPDATE tblEmployee SET Name = Name, LoginName = LoginName, Password = Password, Birthday = Birthday, Email = Email, DeptID = DeptID, BasicSalary = BasicSalary, Title = Title, Telephone = Telepho

14、ne, SelfIntro = SelfIntro, EmployeeLevel = EmployeeLevel, PhotoImage = PhotoImage WHERE (EmployeeID = EmpID),17,7.5 保存修改后的员工信息,修改数据库记录的过程如下: 打开数据库连接 给SqlCommand各参数对象赋值 执行SqlCommand对象的ExecuteNonquery方法 关闭数据库连接,cmdUpdateEmp.Connection.Open();,cmdUpdateEmp.ParametersEmpID.Value = EmployeeID; cmdUpdateE

15、mp.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.DialogResult = DialogResult.None; return; cmdUpdateEmp.Co

16、nnection.Open(); cmdUpdateEmp.ParametersEmpID.Value = EmployeeID; cmdUpdateEmp.ParametersName.Value = txtName.Text; cmdUpdateEmp.ParametersLoginName.Value = txtLogin.Text; cmdUpdateEmp.ParametersPassword.Value = txtPassword.Text; cmdUpdateEmp.ParametersBirthday.Value = Convert.ToDateTime(txtBirthday

17、.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.ParametersBasicSalary.Value

18、 = 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 (photoByteArray != null) cmdUpdateEmp.Parame

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论