课上练习《火车售票维护系统 WPF版—— 车辆管理》
课上练习《火车售票维护系统WPF版—— 车辆管理》
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术: Visual Studio 2015 * SQL Server
作者:
撰写时间:2019年01月01日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
车辆管理模块有查询、新增、修改、删除。
查询:先在数据库查询出页面所需要的字段,再在服务端写查询代码,再通过页面选中的车辆信息的行点击出现车厢的明细信息,再通过点击车厢信息的行出现座位的明细信息,可以通过搜索框的模糊查询查询出想要的字段,否则查询全部数据。
服务端的代码:
[OperationContract]
#region 查询车辆信息
public DataSet UserControl_Loaded_SelectTrain()
{
SqlParameter[] SQLCMDpas =
{
new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "UserControl_Loaded_SelectTrain";
DataTable myDataTable = myDALMethod.QueryDataTable("frm_Compartment", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
客户端的代码:调用封装好的表格的公共样式,先让页面一加载时,修改和删除按钮不能点击,先设置IsEnabled 为 false,和半透明来达到不能点击的效果,再查询出表格数据。
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
//调用封装好的公共样式
PublicStyles.PublicStaticMothd.SetDgStyle(dgTrain);
PublicStyles.PublicStaticMothd.SetDgStyle(dgCompartment);
PublicStyles.PublicStaticMothd.SetDgStyle(dgSeat);
btn_Update.IsEnabled = false;
btn_Update.Opacity = 0.5;
btn_Delete.IsEnabled = false;
btn_Delete.Opacity = 0.5;
GetTable();//刷新表格
}
//刷新表格的方法
private void GetTable()
{
dtTrain = myClient.UserControl_Loaded_SelectTrain().Tables[0];
dgTrain.ItemsSource = dtTrain.DefaultView;//绑定表格数据
}
新增:先绑定下拉框再判断页面数据是否能为空再给数据赋值,也通过文本框改变事件车厢个数的个数不能大于车厢最大个数,如果大于则提示和清空数据。图片显示点击“浏览”按钮弹出显示图片的所有文件夹,如果想要显示多张图片,则把Multiselect的属性设置为true即可;
// 新增保存方法:
private void btn_Affirm_Click(object sender, RoutedEventArgs e)
{
try
{
rowIndex = -1;
byte[][] bytWenJian = new byte[lstBytes.Count][];
for (int i = 0; i < lstBytes.Count; i++)
{
bytWenJian[i] = lstBytes[i];
}
if (cbo_TrainType.SelectedValue.ToString() != "" && cbo_principal.SelectedValue.ToString() != "" && cbo_linkman.SelectedValue.ToString() != ""
&& txt_train_number.Text != "" && txt_bottom_number.Text != "" && txt_BiggestNumber.Text != "" && txt_Remark.Text != "")
{
int intas_type_id = Convert.ToInt32(cbo_TrainType.SelectedValue);
int intprincipal_id = Convert.ToInt32(cbo_principal.SelectedValue);
int intlinkman_id = Convert.ToInt32(cbo_linkman.SelectedValue);
string strtrain_number = txt_train_number.Text.ToString();
string strbottom_number = txt_bottom_number.Text.ToString();
DateTime dtproduction_date = DateTime.Now;
DateTime dtexpiration_date = DateTime.Now;
string strbiggest_pitch = txt_BiggestNumber.Text.ToString();
bool blusing_no = false;
bool bldisable = false;
string strnote = txt_Remark.Text.ToString();
string strrate = txt_Rate.Text.ToString().Trim();
DataTable dtTrain = myClient.UserControl_Loaded_InsertTrain(intas_type_id, intprincipal_id, intlinkman_id, strtrain_number,
strbottom_number, dtproduction_date, dtexpiration_date, strbiggest_pitch, bytWenJian, blusing_no, bldisable, strnote, strrate).Tables[0];
inttrain_id = Convert.ToInt32(dtTrain.Rows[0][0].ToString());
}
if (inttrain_id > 0)
{
for (int i = 0; i < dg.Rows.Count; i++)
{
KaiGuan = true;
int intas_car_type_id = Convert.ToInt32(dg.Rows[i]["CarTypeID"]);
string strcar_number = dg.Rows[i]["car_number"].ToString();
string seat_number = dg.Rows[i]["seat_number"].ToString();
string strnote = ((DataRowView)dgCompartment.Items[i]).Row["note"].ToString();
DataTable dts = InsertSeat(intas_car_type_id.ToString(), seat_number.ToString());
DataTable dtCar = myClient.UserControl_Loaded_InsertCar(intas_car_type_id, strcar_number, strnote, inttrain_id).Tables[0];
intcar_id = Convert.ToInt32(dtCar.Rows[0][0].ToString());
if (intcar_id > 0)
{
for (int j = 0; j < dts.Rows.Count; j++)
{
string strseat_number = dts.Rows[j]["seat_number"].ToString();
string strseatnote = dts.Rows[j]["seat_type"].ToString();
int count = myClient.UserControl_Loaded_InsertCarSeat(intcar_id, intas_car_type_id, strseat_number, strseatnote);
if (count > 0)
{
if (i == dg.Rows.Count - 1 && j == dts.Rows.Count - 1)
{
MessageBoxResult dr = MessageBox.Show("新增车辆成功!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Warning);//弹出确定对话框
if (dr == MessageBoxResult.OK)//如果点了确定按钮
{
this.Close();
}
}
}
else
{
MessageBox.Show("新增车辆失败");
break;
}
}
}
else
{
MessageBox.Show("新增车辆失败");
}
}
}
}
catch (Exception)
{
throw;
}
}
删除:先声明一个字段来记录删除成功的条数,在判断提示用户是否要删除,如果点了OK按钮就执行删除操作,想要删除车辆信息先要删除车厢信息和座位信息。
// 删除按钮
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
try
{
int intDSum = 0;//记录删除成功的条数
MessageBoxResult dr = MessageBox.Show("是否要删除?", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
//如果点了确定按钮
if (dr == MessageBoxResult.OK)
{
int inttrain_id = Convert.ToInt32(((DataRowView)dgTrain.CurrentItem).Row["train_id"]);
int intTrainCount = myClient.UserControl_Loaded_DeleteTrain(inttrain_id);
if (intTrainCount > 0)
{
for (int i = 0; i < dgCompartment.Items.Count; i++)
{
intDSum++;
int intcar_id = Convert.ToInt32(((DataRowView)dgCompartment.Items[i]).Row["car_id"]);
int intCarCount = myClient.UserControl_Loaded_DeleteCar(intcar_id);
if (intCarCount > 0)
{
for (int j = 0; j < dgSeat.Items.Count; j++)
{
intDSum++;
int intcarseat_id = Convert.ToInt32(((DataRowView)dgSeat.Items[j]).Row["seat_id"]);
int intCarSeatCount = myClient.UserControl_Loaded_DeleteCarSeat(intcarseat_id);
}
}
}
}
if (intDSum == dgCompartment.Items.Count)
{
MessageBox.Show("删除车厢成功!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Information);
}
}
GetTable();//刷新表格数据
}
catch (Exception)
{
throw;
}
}