📄 formmain.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IDM.Data;
namespace IDM
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
dtpDateFrom.Value = DateTime.Today;
dtpDateTo.Value = DateTime.Today;
btnQueryDate_Click(sender, e);
}
#region 订单查询按钮事件处理
//查询获取所有订单按钮
private void btnQueryAll_Click(object sender, EventArgs e)
{
if (MessageBox.Show("显示全部订单,数据量可能太大而导致速度变慢。\n您确定要继续吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
iDMDataSet.EnforceConstraints = false;
deliverlistTableAdapter.Fill(iDMDataSet.deliverlist);
orderTableAdapter.Fill(iDMDataSet.order);
iDMDataSet.EnforceConstraints = true;
}
}
//查询指定日期范围订单按钮
private void btnQueryDate_Click(object sender, EventArgs e)
{
iDMDataSet.EnforceConstraints = false;
deliverlistTableAdapter.FillByDateRange(iDMDataSet.deliverlist, dtpDateFrom.Value, dtpDateTo.Value);
orderTableAdapter.FillByDateRange(iDMDataSet.order, dtpDateFrom.Value, dtpDateTo.Value);
iDMDataSet.EnforceConstraints = true;
}
//查询指定IKEA NO订单按钮
private void btQueryIkeaNo_Click(object sender, EventArgs e)
{
string ikeano = tbIkeaNo.Text.Trim();
if (String.IsNullOrEmpty(ikeano))
{
MessageBox.Show("请输入装箱单号!");
}
else
{
if (!ikeano.StartsWith("ECIS"))
{
ikeano = "ECIS" + ikeano;
tbIkeaNo.Text = ikeano;
}
iDMDataSet.EnforceConstraints = false;
deliverlistTableAdapter.FillByIkeaNo(iDMDataSet.deliverlist, ikeano);
orderTableAdapter.FillByIkeaNo(iDMDataSet.order, ikeano);
iDMDataSet.EnforceConstraints = true;
}
}
#endregion
#region 订单管理按钮事件处理
//导入订单按钮
private void tsbImportOrder_Click(object sender, EventArgs e)
{
if (diaOpenExcel.ShowDialog() == DialogResult.OK)
{
TOrderXLS orderXls = TOrderXLS.GetOrderFromExcelFile(diaOpenExcel.FileName);
if (orderXls != null)
{
IDMDataSet.orderRow order = iDMDataSet.order.NeworderRow();
order.customer = orderXls.customer;
order.ddate = orderXls.ddate;
order.ikeano = orderXls.ikeano;
try
{
iDMDataSet.order.AddorderRow(order);
orderTableAdapter.Update(order);
foreach (TOrderDetailXLS od in orderXls.details)
{
IDMDataSet.deliverlistRow deliver = iDMDataSet.deliverlist.NewdeliverlistRow();
deliver.ikeano = orderXls.ikeano;
deliver.goodsno = od.goodsno;
deliver.goodsname = od.goodsname;
deliver.goodsnum = od.goodsnum;
deliver.goodslvl = od.goodslvl;
deliver.delivernum = 0;
iDMDataSet.deliverlist.AdddeliverlistRow(deliver);
}
deliverlistTableAdapter.Update(iDMDataSet.deliverlist);
}
catch
{
tbIkeaNo.Text = orderXls.ikeano;
MessageBox.Show("导入过程中出现错误,请检查已导入数据是否正确。\n注意不能重复导入同一订单。");
}
}
else
{
MessageBox.Show("无法导入数据,请检查Excel发货单的格式是否正确。");
}
}
}
//删除订单
private void tsbDeleteOrder_Click(object sender, EventArgs e)
{
if (MessageBox.Show(this, "您将删除选中的订单和相关数据,确定吗?", "确认删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
foreach (DataGridViewRow row in dgOrder.SelectedRows)
{
DataRowView drv = row.DataBoundItem as DataRowView;
IDMDataSet.orderRow orderRow = drv.Row as IDMDataSet.orderRow;
bool deleteOK = true;
try
{
orderRow.Delete();
orderTableAdapter.Update(orderRow);
}
catch
{
deleteOK = false;
}
if (!deleteOK)
{
if (MessageBox.Show(this,
String.Format("删除订单({0})失败,继续吗?", orderRow.ikeano),
"删除失败", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
break;
}
}
}
}
}
#endregion
#region 装箱按钮事件处理
//辅助函数:清理指定订单的装箱数据
private bool ClearDeliverNumber(IDMDataSet.orderRow orderRow)
{
foreach (IDMDataSet.deliverlistRow row in orderRow.GetdeliverlistRows())
{
row.BeginEdit();
row.delivernum = 0;
row.EndEdit();
}
try
{
deliverlistTableAdapter.Update(iDMDataSet.deliverlist);
return true;
}
catch
{
return false;
}
}
//辅助函数:获取装箱条码清单,计算指定订单的装箱数据
private bool ImportDeliverNumber(IDMDataSet.orderRow orderRow)
{
bool restOK = true;
string[] codeList;
frmImportDeliver frm = new frmImportDeliver();
try
{
if (frm.ShowDialog(this, orderRow.ikeano) == DialogResult.OK)
{
codeList = frm.codeList;
foreach (string code in codeList)
{
string goodsno;
if (code.EndsWith("168449"))
{
goodsno = code.Remove(code.Length - 6);
}
else
{
goodsno = code;
}
IDMDataSet.deliverlistRow row = iDMDataSet.deliverlist.FindBygoodsnoikeano(goodsno, orderRow.ikeano);
if (row == null)
{
row = iDMDataSet.deliverlist.NewdeliverlistRow();
row.ikeano = orderRow.ikeano;
row.goodsno = goodsno;
row.goodsname = "误装货品";
row.goodsnum = 0;
row.goodslvl = 0;
row.delivernum = 1;
iDMDataSet.deliverlist.AdddeliverlistRow(row);
}
else
{
int delivernum = row.delivernum;
row.BeginEdit();
row.delivernum = delivernum + 1;
row.EndEdit();
}
}
deliverlistTableAdapter.Update(iDMDataSet.deliverlist);
}
}
catch
{
restOK = false;
}
return restOK;
}
//辅助函数:处理当前选中订单的装箱数据导入工作,needClear表明是否需要首先清除相应的装箱数据
private void ImportDeliverClick(bool needClear)
{
foreach (DataGridViewRow row in dgOrder.SelectedRows)
{
DataRowView drv = row.DataBoundItem as DataRowView;
IDMDataSet.orderRow orderRow = drv.Row as IDMDataSet.orderRow;
if ((needClear && !ClearDeliverNumber(orderRow)) || !ImportDeliverNumber(orderRow))
{
if (MessageBox.Show(this,
String.Format("导入{0}装箱数据失败,继续吗?", orderRow.ikeano),
"导入失败", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
break;
}
}
}
}
//先清除,后导入装箱数据的按钮
private void tsbNewDeliver_Click(object sender, EventArgs e)
{
ImportDeliverClick(true);
}
//继续导入装箱数据的按钮
private void tsbDelivery_Click(object sender, EventArgs e)
{
ImportDeliverClick(false);
}
#endregion
//退出系统按钮事件
private void tsbExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void dgDeliverList_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if ((e.ColumnIndex == 2 || e.ColumnIndex == 3 || e.ColumnIndex == 1) && e.RowIndex>=0)
{
DataRowView drv = dgDeliverList.Rows[e.RowIndex].DataBoundItem as DataRowView;
IDMDataSet.deliverlistRow row = drv.Row as IDMDataSet.deliverlistRow;
if ((e.ColumnIndex == 1 && row.goodsnum == 0) || (e.ColumnIndex != 1 && row.delivernum != row.goodsnum))
{
e.CellStyle.ForeColor = Color.Red;
e.CellStyle.SelectionForeColor = Color.Red;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -