下面给大家做一个新增的功能的。首先我们要建立一个demo模型,demo模型有两个端口,分别是服务端和客户端,在启动客户端之前一定要先启动服务端,否则系统无法运行,会出现错误,因为客户端的数据是通过服务端来传输的。在实现新增数据之前我们要先在数据库那里把存储过程写好,然后在通过服务器来引用传送到客户端中去。因为职务、工作状态、员工类型和性别多事下拉框,所以,我们在存储过程中要写好下拉框的存储信息,
--(下拉框) 性别
IF(@Type='InsertStaffInformation_Loaded_SelectGender')
SELECT RTRIM(detailed_attribute_gather_id) AS Gender_id,
RTRIM(detailed_attribute_gather_name) AS Gender_name
FROM t_detailed_attribute_gather
WHERE t_detailed_attribute_gather.attribute_gather_id =11
union
Select 0,'---请选择---' from t_detailed_attribute_gather
--(下拉框) 工作状态
IF(@Type='InsertStaffInformation_Loaded_SelectWorkStatus')
SELECT RTRIM(detailed_attribute_gather_id) AS WorkStatus_id,
RTRIM(detailed_attribute_gather_name) AS WorkStatus_name
FROM t_detailed_attribute_gather
WHERE t_detailed_attribute_gather.attribute_gather_id =7
union
Select 0,'---请选择---' from t_detailed_attribute_gather
--(下拉框) 员工类型
IF(@Type='UserControl_Loaded_SelectEmployeeType')
SELECT RTRIM(detailed_attribute_gather_id) AS EmployeeType_id,
RTRIM(detailed_attribute_gather_name) AS EmployeeType_name
FROM t_detailed_attribute_gather
WHERE t_detailed_attribute_gather.attribute_gather_id =6
and t_detailed_attribute_gather.f_attribute_gather_id=@fid
union
Select 0,'---请选择---' from t_detailed_attribute_gather
--(下拉框) 职务
IF(@Type='InsertStaffInformation_Loaded_SelectPost')
BEGIN
SELECT RTRIM(detailed_attribute_gather_id) AS Post_id,
RTRIM(detailed_attribute_gather_name) AS Post_name
FROM t_detailed_attribute_gather
WHERE t_detailed_attribute_gather.attribute_gather_id =12
union
Select 0,'---请选择---' from t_detailed_attribute_gather
END
接着在到新增的员工的信息,对新增的存储信息进行一个判断,EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False,同时指定一个子查询,检测 行 的存在。
--新增员工基本信息
IF(@type='btn_Affirm_Click_InsertStaff')
BEGIN
if exists(select 0 from t_staff where staff_number=@staff_number or id_card=@id_card)
begin
return
end
else
begin
INSERT t_staff(as_employee_type_id, as_work_status_id, as_branch_id, staff_name, staff_number, as_gender_id, age, id_card, birth,
phone_number, address, e_mail, entry_date, departure_date, operator_no, picture, note)
VALUES (@as_employee_type_id, @as_work_status_id, @as_branch_id, @staff_name, @staff_number, @as_gender_id, @age, @id_card, @birth,
@phone_number, @address, @e_mail, @entry_date, @departure_date, @operator_no, @picture, @note)
end
END
写好数据库的存储过程之后,接这执行下一步。第二步,书写服务,。[OperationContract]是操作契约,在写服务的时候必须写,如果不写将不会调用数据。首先,1、我们要先定义服务契约。2、实例化数据层。3、定义要传递的参数和类型(前提是传过来的参数必须与数据库的参数保持一致)。4、获取数据库中的存储过程,然后执行,配置服务,配置成功后,复制配置成功的网址,然后到客户端中对服务器进行引用。书写新增的员工信息。
[OperationContract]//新增员工信息
#region 新增员工资料
public int btn_Affirm_Click_InsertStaff(int intas_employee_type_id, int intas_work_status_id, int intas_branch_id, string strstaff_name,
string strstaff_number, int intas_gender_id, string strage, string strid_card, DateTime dtmbirth,
string strphone_number, string straddress, string stre_mail, DateTime dtmentry_date, DateTime dtmdeparture_date, bool bloperator_no,
byte[][] bytepicture, string strnote)
{
//声明变量接收=>文件名字
string strPatientPhotos = WenJianLiuZhuanHuanLuJing(bytepicture);
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@as_employee_type_id",SqlDbType.Int),
new SqlParameter ("@as_work_status_id",SqlDbType.Int),
new SqlParameter ("@as_branch_id",SqlDbType.Int),
new SqlParameter ("@staff_name",SqlDbType.Char),
new SqlParameter ("@staff_number",SqlDbType.Char),
new SqlParameter ("@as_gender_id",SqlDbType.Int),
new SqlParameter ("@age",SqlDbType.Char),
new SqlParameter ("@id_card",SqlDbType.Char),
new SqlParameter ("@birth",SqlDbType.DateTime),
new SqlParameter ("@phone_number",SqlDbType.Char),
new SqlParameter ("@address",SqlDbType.Char),
new SqlParameter ("@e_mail",SqlDbType.Char),
new SqlParameter ("@entry_date",SqlDbType.DateTime),
new SqlParameter ("@departure_date",SqlDbType.DateTime),
new SqlParameter ("@operator_no",SqlDbType.Bit),
new SqlParameter ("@picture",SqlDbType.Char),
new SqlParameter ("@note",SqlDbType.Char),
};
//对对象赋值
SQLCMDpas[0].Value = "btn_Affirm_Click_InsertStaff";
SQLCMDpas[1].Value = intas_employee_type_id;
SQLCMDpas[2].Value = intas_work_status_id;
SQLCMDpas[3].Value = intas_branch_id;
SQLCMDpas[4].Value = strstaff_name;
SQLCMDpas[5].Value = strstaff_number;
SQLCMDpas[6].Value = intas_gender_id;
SQLCMDpas[7].Value = strage;
SQLCMDpas[8].Value = strid_card;
SQLCMDpas[9].Value = dtmbirth;
SQLCMDpas[10].Value = strphone_number;
SQLCMDpas[11].Value = straddress;
SQLCMDpas[12].Value = stre_mail;
SQLCMDpas[13].Value = dtmentry_date;
SQLCMDpas[14].Value = dtmdeparture_date;
SQLCMDpas[15].Value = bloperator_no;
SQLCMDpas[16].Value = strPatientPhotos;//文件名字
SQLCMDpas[17].Value = strnote;
int count = myDALMethod.UpdateData("UC_StaffInformation", SQLCMDpas);
return count;
}
填写好新增的内容之后,对新增内容点击确认保存新增的内容,同时对数据进行判断。
//1.6新增保存按钮
private void btn_Save_Click(object sender, RoutedEventArgs e)
{
try
{
//提取上传的文件
byte[][] bytepicture = new byte[lstBytes.Count][];
for (int i = 0; i < lstBytes.Count; i++)
{
bytepicture[i] = lstBytes[i];//提取图片
}
if (cbo_StaffType.SelectedValue.ToString() != string.Empty && cbo_Work.SelectedValue.ToString() != string.Empty
&& cbo_Post.SelectedValue.ToString() != string.Empty && txt_Name.Text.ToString() != string.Empty
&& txt_Number.Text.ToString() != string.Empty && cbo_gender.SelectedValue.ToString() != string.Empty
&& txt_idCar.Text.ToString() != string.Empty && dtp_Birthday.Text.ToString() != string.Empty
&& dtp_EnterDate.Text.ToString() != string.Empty && dtp_LeaveDate.Text.ToString() != string.Empty)
{
int intas_employee_type_id = Convert.ToInt32(cbo_StaffType.SelectedValue);
int intas_work_status_id = Convert.ToInt32(cbo_Work.SelectedValue);
int intas_branch_id = Convert.ToInt32(cbo_Post.SelectedValue);
string strstaff_name = txt_Name.Text.ToString();
string strstaff_number = txt_Number.Text.ToString();
int intas_gender_id = Convert.ToInt32(cbo_gender.SelectedValue);
string strage = txt_Age.Text.ToString();
string strid_card = txt_idCar.Text.ToString();
DateTime dtmbirth = Convert.ToDateTime(dtp_Birthday.Text.ToString());
string strphone_number = txt_PhoneNumber.Text.ToString();
string straddress = txt_Address.Text.ToString();
string stre_mail = txt_Email.Text.ToString();
DateTime dtmentry_date = Convert.ToDateTime(dtp_EnterDate.Text.ToString());
DateTime dtmdeparture_date = Convert.ToDateTime(dtp_LeaveDate.Text.ToString());
bool bloperator_no = (bool)chk_operator.IsChecked;//获取checkbox
string strnote = txt_Note.Text.ToString();
//2.新增保存
int count = myClient.btn_Affirm_Click_InsertStaff(intas_employee_type_id,
intas_work_status_id,intas_branch_id,strstaff_name,strstaff_number,intas_gender_id, strage, strid_card, dtmbirth, strphone_number, straddress, stre_mail,dtmentry_date, dtmdeparture_date, bloperator_no, bytepicture, strnote);
if (count > 0)
{
//1.获取页面输入的内容
MessageBoxResult dr = MessageBox.Show("新增员工资料成功!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Warning); //弹出确定对话框
if (dr == MessageBoxResult.OK) //如果点了确定按钮
{
//关闭当前窗口
this.Close();
}
}
else if (count == -1)
{
MessageBox.Show("员工信息已填写重复!", "系统提示", MessageBoxButton.OK,
MessageBoxImage.Warning); //弹出确定对话框
}
}
else
{
MessageBox.Show("员工资料还没完整填完,请继续");
}
}
catch (Exception)
{
throw;
}
}