C#-WinForm-实现学员对象修改

实现学员对象修改示例

查询学员对象-获取DataGridView学员Id 进行跳出窗体修改对像

这里写图片描述


后台修改对象方法

这里写图片描述

 /// <summary>
        /// 修改学员对象
        /// </summary>
        /// <param name="objStu"></param>
        /// <returns></returns>
        public int ModifyStudent(Students objStu)
        {
            StringBuilder sqlBuilder = new StringBuilder();
            sqlBuilder.Append("Update Students set Studentname='{0}',Gender='{1}',")
            .Append("Birthday='{2}',Age={3},StudentIdNo={4},PhoneNumber='{5}',")
            .Append("StudentAddress='{6}',CardNo='{7}',ClassId={8},StuImage='{9}'")
            .Append(" where StudentId={10}");
            string sql = string.Format(sqlBuilder.ToString(), objStu.StudentName,
                 objStu.Gender, objStu.Birthday.ToString("yyyy-MM-dd"), objStu.Age,
                 objStu.StudentIdNo, objStu.PhoneNumber, objStu.StudentAddress,
                 objStu.CardNo, objStu.ClassId, objStu.StuImage, objStu.StudentId);

            try
            {
                return Convert.ToInt32(SQLHelper.Update(sql));
            }
            catch (SqlException ex)
            {

                throw new Exception(ex.Message+"\r\n数据库出现异常");
            }
            catch (Exception)
            {

                throw;
            }
        }

后台判断修改学员时判断身份证号是否和其他学员的重复方法

这里写图片描述

/// <summary>
        /// 修改学员时判断身份证号是否和其他学员的重复
        /// </summary>
        /// <param name="idNo"></param>
        /// <param name="studentId"></param>
        /// <returns></returns>
        public bool IsIdNoExisted(string idNo ,string studentId)
        {
            string sql = "Select Count(*) from Students where StudentIdNo={0}";
            sql += " and StudentId={1}";
             sql = string.Format(sql, idNo, studentId);
            int count = Convert.ToInt32(SQLHelper.GetSingleResult(sql));
            if (count == 1) return true;
            else return false;

前台修改按钮事件方法

1-判断DataGirdView有没有数据与鼠标的选中行
2-获取选中的DataGirdView选中的行的ID,查询数据然后如果有跳出修改的窗体信息

这里写图片描述

3-如果查询有数据跳出新的窗体

这里写图片描述

   //修改按钮事件
        private void btnEidt_Click(object sender, EventArgs e)
        {
            if(this.dgvStudentList.RowCount==0)
            {
                MessageBox.Show("没有要修改的内容", "修改提示");
                return;
            }
            if(this.dgvStudentList.CurrentRow==null)
            {
                MessageBox.Show("请选择要修改的学员", "修改提示");
                return;
            }
            //查询学员信息
            string studentId = this.dgvStudentList.CurrentRow.Cells["StudentId"].Value.ToString();
            StudentExt objStudent = objStudentService.GetStudentById(studentId);

                FrmEditStudent objEditStudent = new FrmEditStudent(objStudent);
                 DialogResult result =  objEditStudent.ShowDialog();
                if (result == DialogResult.OK)
                {
                    btnQuery_Click(null, null);
                }



        }

4-初始化窗体信息

这里写图片描述

5-提交按钮事件

这里写图片描述

5.1—-数据验证

这里写图片描述

5.2—-封装对象

这里写图片描述

5.3—-后台数据交互

这里写图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAL;
using Models;
namespace StudentManagePro
{
    public partial class FrmEditStudent : Form
    {
        private StudentService objStuService = new StudentService();
        private StudentClassService objClassService = new StudentClassService();
        public FrmEditStudent()
        {
            InitializeComponent();
        }
        public FrmEditStudent(Students objStu):this()
        {
            this.cboClass.DataSource = objClassService.GetAllClass();
            this.cboClass.DisplayMember = "ClassName";
            this.cboClass.ValueMember = "ClassId";

            this.txtStuId.Text = Convert.ToInt32(objStu.StudentId).ToString();
            this.txtStuName.Text = objStu.StudentName;
            this.dtpBirthday.Text = objStu.Birthday.ToShortDateString();
            this.txtCardNo.Text = objStu.CardNo;
            this.txtStuIdNo.Text = objStu.StudentIdNo.ToString();
            this.txtPhoneNumber.Text = objStu.PhoneNumber;
            if (objStu.Gender == "男") this.rdoMale.Checked = true;
            else this.rdoFeMale.Checked = true;
            this.txtStuAddress.Text = objStu.StudentAddress;
            this.puStu.Image = objStu.StuImage.Length == 0 ? Image.FromFile("default.gif") :
                (Image)new Common.SerializeObjectToString().DeserializeObject(objStu.StuImage);
        }
        //提交修改
        private void btnModify_Click(object sender, EventArgs e)
        {
            #region 数据验证
            if (this.txtStuName.Text.Trim().Length == 0)
            {
                MessageBox.Show("请输入姓名", "修改提示");
                this.txtStuName.Focus();
                return;
            }
            if (!this.rdoFeMale.Checked && !this.rdoMale.Checked)
            {
                MessageBox.Show("请选择性别", "修改提示");
                return;
            }
            if (this.cboClass.SelectedIndex == -1)
            {
                MessageBox.Show("请选择班级", "修改提示");
                this.cboClass.Focus();
                return;
            }
            if(this.txtStuIdNo.Text.Trim()==null)
            {
                MessageBox.Show("身份证号不能为空");
                this.txtStuIdNo.Focus();
                return;
            }
            //验证身份证号格式
            if(!Common.DataValidate.IsIdentityCard(this.txtStuIdNo.Text.Trim()))
            {
                MessageBox.Show("身份证号格式不正确请重新输入", "修改提示");
                this.txtStuIdNo.Focus();
                return;
            }
            //验证身份证是否重复
            if(objStuService.IsIdNoExisted(this.txtStuIdNo.Text.Trim(),this.txtStuId.Text.Trim()))
            {
                MessageBox.Show("身份证号与ID重复“”", "修改提示");
                this.txtStuIdNo.Focus();
                return;
            }
            //验证身份证号是否与出生日期吻合
            string month = string.Empty;
            string day = string.Empty;
            if((Convert.ToDateTime(this.dtpBirthday.Text)).Month<10)
            {
                month = "0" + Convert.ToDateTime(this.dtpBirthday.Text).Month.ToString();
            }
            else
            {
                month = Convert.ToDateTime(this.dtpBirthday.Text).Month.ToString();
            }
            if((Convert.ToDateTime(this.dtpBirthday.Text)).Day<10)
            {
                day = "0" + Convert.ToDateTime(this.dtpBirthday.Text).Day.ToString();
            }
            else
            {
                day = Convert.ToDateTime(this.dtpBirthday.Text).Day.ToString();
            }
            string birthday = Convert.ToDateTime(this.dtpBirthday.Text).Year.ToString() + month + day;
            #endregion

            #region 封装对象
            StudentExt objStu = new StudentExt()
            {
                StudentId = Convert.ToInt32(this.txtStuId.Text.Trim()),
                StudentName = this.txtStuName.Text.Trim(),
                Gender = this.rdoMale.Checked ? "男" : "女",
                Birthday = Convert.ToDateTime(this.dtpBirthday.Text.Trim()),
                Age = DateTime.Now.Year - Convert.ToDateTime(this.dtpBirthday.Text).Year,
                StudentIdNo = Convert.ToDecimal(this.txtStuIdNo.Text.Trim()),
                PhoneNumber = this.txtPhoneNumber.Text.Trim(),
                CardNo = this.txtCardNo.Text.Trim(),
                StudentAddress = this.txtStuAddress.Text.Trim(),
                ClassId = Convert.ToInt32(this.cboClass.SelectedValue),
                StuImage = this.puStu.Image == null ? "" : new Common.SerializeObjectToString()
                .SerializeObject(this.puStu.Image)

            };
            #endregion

            #region 后台交互
            try
            {
               if(objStuService.ModifyStudent(objStu)==1)
                {
                    MessageBox.Show("修改成功", "修改提示");
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据库错误具体信息!\r\n", ex.Message, MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }
            #endregion


        }
    }
}

同步修改后DataGridView的修改信息

这里写图片描述

1–新弹出窗体设置状态–返回修改信息

这里写图片描述

2-学生信息管理窗体 - 重新调用查询
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值