哈喽,你好啊,我是雷工!
前面练习了账号管理系统中的修改账号信息的功能,接下来接着练习账号的删除功能。
以下为练习笔记。
01 实现功能①:从查询到的账号信息中,选中某个账号,点击【删除账号】按钮,从数据库中删除所选中的信息;
②:更新显示,删除数据库信息的同时更新删除当前dgv中的信息,且查询结果数值同步更新;
02 效果演示①:取消删除
当点击【删除账号】时会弹出二次确认窗口,当点击【取消】按钮时,关闭确认弹窗;
②:确认删除
当在二次确认弹窗中选择【确认】按钮时,会删除数据库中对应的账号信息,且同步更新当先界面显示内容:
③:数据库数据
确认数据库中是否删除了账号ID=10013的账号信息:
03 实现步骤3.1、数据访问层
删除的数据访问层比较简单,直接根据选中行的账号ID删除选中内容即可。
代码如下:
/// <summary>
/// 删除账号
/// </summary>
/// <param name="account"></param>
/// <returns></returns>
public int DeleteAccount(Account account)
{
string sql="delete from Account where AccountId=" acCount.AccountId;
return SQLHelper.Update(sql);
}
3.2、业务逻辑层
业务逻辑层同样只是传递业务,没有更多的业务处理‘
代码如下:’
public int DeleteAccount(Account account)
{
return accountServices.DeleteAccount(account);
}
3.3、UI界面层
UI界面层的代码实现也不复杂,实现思路如下:
实现思路:
①:当点击【删除账号】按钮时,首先判断是否有选中某行信息,未选中则提示先选中;
②:获得选中行的账号ID;
③:增加二次确认弹窗,确认是否删除,避免误操作;
④:调用后台代码执行删除数据库信息;
⑤:同时从缓存集合中删除选中行;
⑥:同步更细界面显示删除后的状态;
事件代码如下:
private void btnDeleteIP_Click(object sender, EventArgs e)
{
//①:首先判断
if (this.dgvAccountList.CurrentRow == null)
{
MessageBox.Show("得先选中一行呀!", "雷工提示");
return;
}
//②:获取账号ID
int accountId = (int)this.dgvAccountList.CurrentRow.Cells["AccountId"].Value;
//③:二次确认
DialogResult result = MessageBox.Show($"确认要删除编号为{accountId}的账号吗?", "雷工提醒", MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (result == DialogResult.Cancel) return;
//④:调用后台
int deleteAccount = accountManager.DeleteAccount(new Account { AccountId = accountId });
//⑤:从缓存集合中删除
//使用LINQ查询或扩展方法
this.queryList.Remove(this.queryList.Where(a => a.AccountId == accountId).First());
//⑥:同步刷新显示
this.dgvAccountList.DataSource = null;
this.dgvAccountList.DataSource = this.queryList;
this.lblCount.Text = this.queryList.Count.ToString();
}
04 后记
以上为账号管理系统中账号删除的练习,比较具有通用性,实际项目开发中开发思路相同。
接下来会练习如何修改管理员的登录密码操作,有感兴趣的可以一起练习。