实现学员对象修改示例
查询学员对象-获取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-学生信息管理窗体 - 重新调用查询