在这里做一个功能,修改。在当下的这个Dome中,有两个端,客户端和服务端,而现在做的功能是修改,
首先是先把存储过程写好,这里有两个存储过程,一个是下拉框的查询,另一个是修改保存员工账号信息的,写好存储过程后,接下来就是写服务,服务当中的[OperationContract]是操作契约,在写服务时需写。一般服务的格式都是一样的,先1、实例化对象数组;2、定义传递参数,以及传递参数的类型(传递过来的参数必须和数据库的参数保持一致);3、获取执行的存储过程名称,然后返回值。写好服务后需要执行;如需配置请看上一篇发的新增里有写到配置,因为这里的修改和新增的服务是写在同一个服务当中,所以不需要配置,只需要写好服务,执行,然后到客户端那边更新服务就行了。服务这边写好后,就到客户端这边了。
//查询已有账号的员工信息(下拉框)
[OperationContract]
public DataSet Loaded_UpdateSelectStaff()
{
//实例化对象数组(序列化参数)
SqlParameter[] mySqlParameters =
{
//定义传递参数,以及传递参数的类型
new SqlParameter("@type",SqlDbType.NChar)
};
mySqlParameters[0].Value = "Loaded_UpdateSelectStaff";//获取执行的存储过程名称
DataSet ds = myDAL.QueryDataSet("UC_StaffAccountManage", mySqlParameters);
return ds;
}
//修改账号信息
[OperationContract]
public int Click_UpdateStaffAccountManage(int staffID, string strAccounts, string strPassword, bool bleffective, string strNote,int operator_id)
{
SqlParameter[] mySqlParameters =
{
new SqlParameter("@type",SqlDbType.NChar),
new SqlParameter("@staff_id",SqlDbType.Int),
new SqlParameter("@operator_accounts",SqlDbType.NChar),
new SqlParameter("@operator_password",SqlDbType.NChar),
new SqlParameter("@effective",SqlDbType.Bit),
new SqlParameter("@note",SqlDbType.NChar),
new SqlParameter("@operator_id",SqlDbType.Int),
};
mySqlParameters[0].Value = "Click_UpdateStaffAccountManage";
mySqlParameters[1].Value = staffID;
mySqlParameters[2].Value = strAccounts;
mySqlParameters[3].Value = strPassword;
mySqlParameters[4].Value = bleffective;
mySqlParameters[5].Value = strNote;
mySqlParameters[6].Value = operator_id;
int intcount = myDAL.UpdateData("UC_StaffAccountManage", mySqlParameters);
return intcount;
}
写完服务,就到客户端这里,更新服务,找到你所引用进来的服务,然后点击右键,选择更新服务引用就可以了。而且在服务那写完后,必须先执行,在到客户端这边。界面的搭建窗口代码有点多,所以就不写出来了。以下的就是通过修改按钮的点击事件把窗口弹出。
<Button x:Name="btn_Update" Content="修改" Width="50" Height="30" VerticalAlignment="Stretch" Margin="4" Style="{StaticResource ToolBarButton}" Click="btn_Update_Click"/>
以下就是弹出修改窗口的修改数据过程,先实例化服务命名空间,然后就可以使用了,在页面加载事件中,把下拉框绑定好,然后回填页面控件数据,做完这些就到保存操作了,以下代码中有注释
保存的点击事件:
private void btn_Save_Click(object sender, RoutedEventArgs e)
{
try
{
if (cbo_Name.SelectedValue.ToString() != "" && txt_Account.Text.Trim() != "" && pw_Password.Password.Trim() != "")//判断页面数据
{ //2、获取页面控件数据
int staffID = Convert.ToInt32(cbo_Name.SelectedValue);
string strAccounts = txt_Account.Text.Trim();
string strPassword = pw_Password.Password.Trim();
bool bleffective = (bool)chk_Effect.IsChecked;
string strNote = txt_Note.Text.Trim();
int intOperatorId = Convert.ToInt32(DRV.Row["operator_id"]);//操作ID
int intcount = myClient.Click_UpdateStaffAccountManage(staffID, strAccounts, strPassword, bleffective, strNote, intOperatorId);//3、执行修改
if (intcount > 0)//4、提示
{
MessageBoxResult dr = MessageBox.Show("账号修改成功!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Asterisk);
if (dr == MessageBoxResult.OK)
{
this.Close();
}
}
else if (intcount == -1)
{
MessageBox.Show("账号重复,不能修改!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation);
}
}
else
{
MessageBox.Show("请把页面数据填写完整!", "系统提示", MessageBoxButton.OK,
MessageBoxImage.Warning); //弹出确定对话框
}
}
catch (Exception)
{
throw;
}
}