⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formmain.cs

📁 一个自己开发的简单发货管理系统
💻 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 + -