任务4 联系人分组管理_第1页
任务4 联系人分组管理_第2页
任务4 联系人分组管理_第3页
任务4 联系人分组管理_第4页
任务4 联系人分组管理_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、1任务任务4 4 联系人分组管理联系人分组管理2Demo:实现联系人分组管理实现联系人分组管理本章任务3本章任务本章任务Activity:实现学生选课系统:实现学生选课系统的用户管理功能。的用户管理功能。4联系人分组管理界面联系人分组管理界面设计联系人分组管理界面5为了以列表形式显示联系人分组信息,我们在窗体上用了一个新的控件DataGridView,该控件位于工具箱的“数据”选项卡内。设置DataGridView控件的Name属性为dgvGroupList,并修改Columns属性,添加3列,各列类型均为DataGridViewTextBoxColumn。DataGridView设置6Dat

2、aGridView设置DataGridView控件各列属性设置 属性设置属性设置 列名称列名称属性名称属性名称设置结果设置结果说明说明Column1HeaderText编号列标题文本DataPropertyNameId要绑定的数据列的名称VisibleFalse指定列是否可见指定列是否可见Column2HeaderText分组名称列标题文本DataPropertyNameGroupName要绑定的数据列的名称VisibleTrue指定列是否可见Column3HeaderText备注列标题文本DataPropertyNameMemo要绑定的数据列的名称VisibleTrue指定列是否可见窗体上各

3、按钮属性设置 属性设置属性设置 控件名称控件名称属性属性设置结果设置结果btnAddText增加btnDeleteText删除btnModifyText修改btnCloseText关闭9/实现分组信息显示(1)首先在代码中添加对)首先在代码中添加对System.Data.SqlClient命名空间的引用:命名空间的引用: using System.Data.SqlClient;(2)为窗体类定义如下的实例变量:)为窗体类定义如下的实例变量: SqlDataAdapter da; DataSet ds;代码编写10/实现分组信息显示(3)编写自定义方法)编写自定义方法Fill(),向,向Data

4、GridView控件中填充数据:控件中填充数据:public void Fill() string sql = select Id,GroupName,Memo from ContactGroup order by Id desc; using (SqlConnection conn = new SqlConnection(DBHelper.connString) da = new SqlDataAdapter(sql, conn); ds = new DataSet(); da.Fill(ds); dgvGroupList.DataSource = ds.Tables0; (4)在窗体的)在

5、窗体的Load事件中调用事件中调用Fill方法:方法:private void FormGourpList_Load(object sender, EventArgs e) Fill(); 代码编写11运行程序,即可在窗体上显示出分组信息 :代码编写12DataSet对象13创建DataSet对象DataSet ds = new DataSet();创建DataSet对象后可以临时存储数据,那么如何将数据放到数据集中呢?这就需要用到数据适配器DataAdapter对象。 DataSet对象14(1)创建数据库连接对象)创建数据库连接对象SqlConnection conn = new SqlC

6、onnection(DBHelper.connString);(2)建立从数据库查询数据用的)建立从数据库查询数据用的SQL语句语句string sql = select Id,GroupName,Memo from ContactGroup;(3)通过上面创建的)通过上面创建的SQL语句和数据库连接对象创建语句和数据库连接对象创建SqlDataAdapte对象对象SqlDataAdapter da = new SqlDataAdapter(sql, conn);(4)调用)调用SqlDataAdapter对象的对象的Fill方法向数据集中填充数据方法向数据集中填充数据DataSet ds=

7、new DataSet();da.Fill(ds); SqlDataAdapter对象 15数据集中有了数据以后,我们只需设置数据集中有了数据以后,我们只需设置DataGridView控件控件的的DataSource属性,就可以显示数据了:属性,就可以显示数据了:dgvGroupList.DataSource = ds.Tables0;显示DataSet中的数据16如果如果DataSet中已包含数据,我们可以通过下面的代码来访中已包含数据,我们可以通过下面的代码来访问第一个表中第问第一个表中第i行第行第j列的数据(索引均从列的数据(索引均从0开始):开始):ds.Tables0.Rowsi.I

8、temArrayj;还可以通过下面的代码获取数据表中记录的还可以通过下面的代码获取数据表中记录的行数行数:ds.Tables0.Rows.Count;还可以通过下面的代码获取数据表中字段的还可以通过下面的代码获取数据表中字段的列数列数:ds.Tables0. Columns.Count ;访问DataSet中的数据17/结合使用结合使用SqlDataAdapter和和DataSet,我们也可以用下面的代码来实现用户登录功能:,我们也可以用下面的代码来实现用户登录功能:string connString = DBHelper.connString;string sqlStr = string.F

9、ormat(select * from User where UserName=0 a n d P a s s w o r d = 1 , t x t U s e r N a m e .Te x t .T r i m ( ) , txtUserPassword.Text.Trim();using (SqlConnection conn = new SqlConnection(connString) SqlDataAdapter da = new SqlDataAdapter(sqlStr, conn); DataSet ds = new DataSet(); da.Fill(ds); if(d

10、s.Tables0.Rows.Count!=0) MessageBox.Show(登录成功!登录成功!); else MessageBox.Show(用户名或密码错误!用户名或密码错误!); 访问DataSet中的数据18设计新增分组窗体 :实现联系人分组新增功能窗体中各控件属性设置 属性设置属性设置 控件类型控件类型控件名称控件名称属性属性设置结果设置结果LabellblGroupNameText分组名称lblGroupMemoText备注TextBoxtxtGroupNametxtGroupMemoMultilineTrueButtonbtnSaveText保存btnCloseText关闭

11、20/判断分组名称是否重复判断分组名称是否重复 bool CheckGroupName(string groupName) bool check = true; using (SqlConnection conn = new SqlConnection(DBHelper.connString) string sql = string.Format(select count(*) from ContactGroup where GroupName=0, groupName); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int

12、 n = Convert.ToInt32(cmd.ExecuteScalar(); if (n = 1) MessageBox.Show(分组名称重复,请修改!分组名称重复,请修改!); txtGroupName.Focus(); check = false; return check; 代码编写21/“保存保存”按钮的单击事件按钮的单击事件 private void btnSave_Click(object sender, EventArgs e) /获取并验证数据获取并验证数据 /保存到数据库中保存到数据库中 using (SqlConnection conn = new SqlConne

13、ction(DBHelper.connString) string sql = string.Format(insert into ContactGroup values(0,1),groupName, memo); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int n = Convert.ToInt32(cmd.ExecuteNonQuery(); if (n != 1) MessageBox.Show(添加分组失败!添加分组失败!); else MessageBox.Show(添加分组成功!添加分组成功!); 代码编写

14、22/“关闭关闭”按钮的单击事件按钮的单击事件 private void btnClose_Click(object sender, EventArgs e) this.Close();/窗体窗体FormGroupList上的上的“增加增加”按钮编写单击事件按钮编写单击事件 private void btnAdd_Click(object sender, EventArgs e) FormGroupAdd f = new FormGroupAdd(); f.ShowDialog(); Fill();代码编写23/如果分组下存在联系人信息,不允许删除!如果分组下存在联系人信息,不允许删除! pr

15、ivate void btnDelete_Click(object sender, EventArgs e) int iid = (int)dgvGroupList.CurrentRow.Cells0.Value; if (MessageBox.Show(确定要删除吗?确定要删除吗?, 询问询问, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return; using (SqlConnection conn = new SqlConnection(DBHelper.connString) strin

16、g sql = string.Format(select count(*) from Contact where GroupId=0, id); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int n = Convert.ToInt32(cmd.ExecuteScalar(); if (n = 1) MessageBox.Show(该分组下存在联系人信息,不允许删除!该分组下存在联系人信息,不允许删除!); return; 删除分组24/删除分组删除分组using (SqlConnection conn = new SqlC

17、onnection(DBHelper.connString) string sql = string.Format(delete from ContactGroup where Id=0, id); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int n = Convert.ToInt32(cmd.ExecuteNonQuery(); if (n != 1) MessageBox.Show(删除失败!删除失败!); else MessageBox.Show(删除成功!删除成功!); Fill(); 删除分组25设计修改分组信

18、息窗体 :修改分组信息窗体中各控件属性设置 控件类型控件类型控件名称控件名称属性属性设置结果设置结果LabellblIdText分组编号lblGroupNameText分组名称lblGroupMemoText备注TextBoxtxtIdEnabledFalsetxtGroupNametxtGroupMemoMultilineTrueButtonbtnSaveText保存修改分组信息27(1)定义)定义FormGroupDetail窗体的私有字段窗体的私有字段int id;(2)给)给FormGroupDetail窗体增加一个构造方法窗体增加一个构造方法public FormGroupDetai

19、l(int id) this.id = id; InitializeComponent(); 修改分组信息28(3)补充)补充FormGroupList窗体中窗体中“修改修改”按钮的单击事件代码按钮的单击事件代码private void btnModify_Click(object sender, EventArgs e) int id = 0; try id = (int)dgvGroupList.CurrentRow.Cells0.Value; catch (System.Exception ex) MessageBox.Show(请选择有效数据行!请选择有效数据行!); return;

20、FormGroupDetail f = new FormGroupDetail(id); f.ShowDialog(); Fill(); 修改分组信息29/在在FormGroupDetail窗体的窗体的Load事件中根据编号查询该分组信息事件中根据编号查询该分组信息 private void FormGroupDetail_Load(object sender, EventArgs e) txtId.Text = id.ToString();/编号已通过重载的构造方法传入编号已通过重载的构造方法传入 string connString = DBHelper.connString; string

21、 sqlStr = string.Format(select * from ContactGroup where id=0, id); using (SqlConnection conn = new SqlConnection(connString) SqlCommand cmd = new SqlCommand(sqlStr, conn); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() txtGroupName.Text = drGroupName.ToString(); txtGroupMemo.Tex

22、t = drMemo.ToString(); dr.Close(); 修改分组信息30经过这几步后,单击FormGroupList窗体中“修改”按钮,即可在FormGroupDetail窗体中显示选中的分组信息,以供用户查看、修改。 修改分组信息31/实现修改分组信息后的保存功能实现修改分组信息后的保存功能 private void btnSave_Click(object sender, EventArgs e) string groupName = txtGroupName.Text.Trim(); string memo = txtGroupMemo.Text.Trim(); using

23、 (SqlConnection conn = new SqlConnection(DBHelper.connString) string sql = string.Format(update ContactGroup set GroupName=0,Memo=1 where Id=2, groupName, memo,id); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int n = Convert.ToInt32(cmd.ExecuteNonQuery(); if (n != 1) MessageBox.Show(更新失败!更新失败!); else MessageBox.Show(更新成功!更新成功!); 修改分组信息32/我们还可以编写我们还可以编写FormGroupList窗体中窗体中DataGridView控件的控件的CellDoubleClick事事件代码,使得用户在件代码,使得用户在DataGridView控件中双击某行,也能查看、修改分组信息:控件中双击某行,也能查看、修改分组信息: private void dgvGroupList_CellDoubleClick(object sender

温馨提示

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

评论

0/150

提交评论