编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

C#实战|人员管理系统[22]:按照所属组织名称查询人员列表

wxchong 2024-10-21 13:04:18 开源技术 65 ℃ 0 评论

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

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

以下为练习笔记。

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 后记

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

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表