C

雅轩聊科技 2024-08-08 18:11:26

哈喽,你好啊,我是雷工!

对于人员管理系统来说,查询是很重要的模块,接下来练习按组织查询人员信息;

以下为练习笔记。

01 效果演示

①当未选择所属组织时,点击【提交查询】按钮,提示“请选择所属组织”;

②当选择所属组织,然后点击【提交查询】按钮,在列表中显示查询到的该组织的所有人员信息;

02 实现步骤

2.1、数据访问方法

按照分层架构的开发方法,首先完成数据访问方法的编写;

首先在数据访问层的人员信息访问类PeopleServer中添加相关方法;

代码如下:

/// <summary>/// 根据组织查询人员信息/// </summary>/// <param name="groupName">组织名称</param>/// <returns>返回人员信息列表</returns>public List<People>GetPeoplesByGroup(string groupName){ string sql = "select PeopleId,PeopleName,Gender,Birthday,PeopleIdNo,PhoneNumber,GroupName from Peoples "; sql += "inner join PeopleGroup on Peoples.GroupId=PeopleGroup.GroupId "; sql += "where GroupName='{0}'"; sql = string.Format(sql,groupName); SqlDataReader objReader = SQLHelper.GetReader(sql); List<People> peoList = new List<People>(); while(objReader.Read()) {peoList.Add(new People(){ PeopleId = Convert.ToInt32(objReader["PeopleId"]), PeopleName = objReader["PeopleName"].ToString(), Gender = objReader["Gender"].ToString(), PhoneNumber = objReader["PhoneNumber"].ToString(), Birthday = Convert.ToDateTime(objReader["Birthday"].ToString()), IdNumber = objReader["PeopleIdNo"].ToString(), GroupName = objReader["GroupName"].ToString()}); } objReader.Close(); return peoList;}

2.2、所属组织

在子窗体加载时自动查询数据库内组织信息,添加到所属组织选择下拉框中;

该功能在添加人员的功能模块中有过相关记录;

①在子窗体的代码界面添加需要的命名空间;

using DAL;using Models;

②创建数据访问对象

private GroupService objGroupService = new GroupService();private PeopleServer objPeoServer = new PeopleServer();

③初始化组织下拉框

public FrmPeopleManage(){ InitializeComponent(); this.BackColor = Color.FromArgb(0, 25, 71); //初始化组织选择下拉框 this.cboGroup.DataSource = objGroupService.GetAllGroups(); this.cboGroup.DisplayMember = "GroupName";//设置下拉框显示文本 this.cboGroup.ValueMember = "GroupId";//设置下拉框显示文本对应的值 this.cboGroup.SelectedIndex = -1;//设置不选中任意组织 this.dgvPeopleList.AutoGenerateColumns = false;//禁止自动生成列}

注意:该段代码与添加人员中的自动查询加载组织名称下拉框的代码一样,可以直接复制过来;

2.3、按照组织查询

①:首先在UI界面的对应按钮【提交查询】上双击,生成提交查询事件代码;

②检验所属组织已选择;

③执行查询并将查询结果绑定到列表控件;

代码如下:

//按照组织查询private void btnQuery_Click(object sender, EventArgs e){ if(this.cboGroup.SelectedIndex==-1) {MessageBox.Show("请先选择所属组织!", "雷工提示");return; } //执行查询并绑定数据 this.dgvPeopleList.DataSource = objPeoServer.GetPeoplesByGroup(this.cboGroup.Text);}

2.4、添加行号

为查询列表的查询结果添加行号,与添加人员模块中的实现一样

①选中DataGridView控件,在属性-事件-找到【RowPostPaint】,然后在其后面双击,生成相关事件代码

②然后将添加人员界面中添加行号的代码复制过来即可:

//为列表控件添加行号private void dgvPeopleList_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e){ Common.DataGridViewStyle.DgvRowPostPaint(this.dgvPeopleList, e);}03 调试问题处理

调试中出现查询结果中,身份证号列的内容未显示,

解决办法:

是因为控件编辑列中数据绑定的列名与数据源对象中的列名不一致,修改为一致后则正常显示;

04 后记

以上为按照所属组织查询人员列表的实现过程,关于表格的样式还可以优化样式使其更美观,

你在项目中使用过哪些好用的功能,欢迎在评论区留言或在交流群探讨。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注