右键点击修改数据状态排序

    //排队车辆被点击
        private void OrderToolStripMenuItem_Click(object sender, EventArgs e)
        {
           
            //每5秒刷新一次会导致选中的节点刷新获取不到所以在右键的时候把timer禁用
            isUpdatOrAdd = false;
            isShow = 1;
            //修改数据状态
            try
            {
                if (DragWho == 1)
                {
                    updatContextMenu(tvQueuing);
                    updateTransportorder_proc(DragWho);
                }
                if (DragWho == 2)
                {
                    updatContextMenu(tvDeparture);
                    updateTransportorder_proc(DragWho);
                }
                if (DragWho == 3)
                {
                    updatContextMenu(tvPause);
                    updateTransportorder_proc(DragWho);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


        }

    //右键菜单的时候排队车辆tv点击右键修改为出站,
        //1将点击的数据的类型修改,排序顺序修改,再移除节点从排队的tv
        //2再把修改的节点加上,再重新排序
        public void updatContextMenu(TreeView tv)
        {
            try
            {
   
                if (tv.SelectedNode.Text != null)
                {
                    string tests = tv.SelectedNode.Text;
                    //根据节点的车号查找对应的车id
                    DataTable dt = YieldTransitEditBus.getTinByNo(tests);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        tin.ID = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
                        if (isShow == 1)//代表右键选中的是将数据从其他的类型修改为排队类型
                        {
                            //类型最大的排序+1
                            string sqlMax = "SELECT max (VehicleOrder_ID) as VehicleOrder_ID from EMTinCar where VehicleStateType_ID=" + isShow;
                            string MaxValue = Common.Conn.SqlHelper.getSqlValue(sqlMax);
                            int Maxvalues = 0;
                            if (!string.IsNullOrEmpty(MaxValue))
                            {
                                Maxvalues = Convert.ToInt32(MaxValue) + 1;
                            }
                            else {
                                Maxvalues = 1;//可能被清理光了,再重新走一下跟新车辆一样的排序过程
                            }
                            tin.VehicleOrder_ID = Maxvalues;
                            tin.VehicleStateType_ID = 1;
                            //老的类型数据tv节点移除,新的类型数据tv节点新增
                            ContestMRemoveOrAddNode();
                            YieldTransitEditBus.updateemtin(tin);
                            lblMessages.Visible = true;
                            lblMessages.Text = "提示:" + tests + "号车已修改为排队车辆";
                        } 
                        if (isShow == 2)
                        {
                            string sqlMax = "SELECT max (VehicleOrder_ID)as VehicleOrder_ID from EMTinCar where VehicleStateType_ID=" + isShow;
                            string MaxValue = Common.Conn.SqlHelper.getSqlValue(sqlMax);
                            int Maxvalues = 0;
                            if (!string.IsNullOrEmpty(MaxValue))
                            {
                                Maxvalues = Convert.ToInt32(MaxValue) + 1;
                            }
                            else
                            { 
                                Maxvalues = 1;
                            }
                            //把累计的赋值VehicleOrder_ID,新建一条数据到这个类型下面
                            tin.VehicleOrder_ID = Maxvalues;
                            tin.VehicleStateType_ID = 2;
                            ContestMRemoveOrAddNode();
                            YieldTransitEditBus.updateemtin(tin);
                            lblMessages.Visible = true;
                            lblMessages.Text = "提示:" + tests + "号车已修改为出站车辆";
                        } 
                        //右键了暂停类型
                        if (isShow == 3)
                        {
                            //根据类型查询这个类型最大的排序编号+1
                            string sqlMax = "SELECT max (VehicleOrder_ID)as VehicleOrder_ID from EMTinCar where VehicleStateType_ID=" + isShow;
                            string MaxValue = Common.Conn.SqlHelper.getSqlValue(sqlMax);
                            int Maxvalues = 0;
                            if (!string.IsNullOrEmpty(MaxValue))
                            {
                                Maxvalues = Convert.ToInt32(MaxValue) + 1;
                            }
                            else
                            {
                                Maxvalues = 1;
                            }
                            //把累计的赋值VehicleOrder_ID,新建一条数据到这个类型下面
                            tin.VehicleOrder_ID = Maxvalues;
                            tin.VehicleStateType_ID = 3;
                            ContestMRemoveOrAddNode();
                            YieldTransitEditBus.updateemtin(tin);
                           lblMessages.Visible = true;
                           lblMessages.Text = "提示:" + tests + "号车已修改为暂停车辆";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

  #region 通用刷新右键和拖拽移动节点方式
        public void ContestMRemoveOrAddNode() 
        {
            //老的tv节点移除,新的tv节点新增
            if (DragWho == 1)//操作排队tv的情况分二种
            {
                if (isShow == 2)
                {
                    RemoveOrAddNode(tvQueuing, tvDeparture);//操作排队车辆将数据从排队修改为出站
                } if (isShow == 3)
                {
                    RemoveOrAddNode(tvQueuing, tvPause);
                }
            }
            if (DragWho == 2)
            {
                if (isShow == 1)
                {
                    RemoveOrAddNode(tvDeparture,tvQueuing );
                } if (isShow == 3)
                {
                    RemoveOrAddNode(tvDeparture, tvPause);
                }
            }
            if (DragWho == 3)
            {
                if (isShow == 2)
                {
                    RemoveOrAddNode(tvPause, tvDeparture);
                } if (isShow == 1)
                {
                    RemoveOrAddNode(tvPause, tvQueuing);
                }
            }
        }
        #endregion

        /// <summary>
        /// 移除或者新增节点
        /// </summary>
        /// <param name="tvOldCheck">点击所在的节点移除</param>
        /// <param name="tvNewUpdate">要修改的为某个类型的节点新增</param>
        public void RemoveOrAddNode(TreeView tvOldCheck, TreeView tvNewUpdate)
        {
            tvNewUpdate.Nodes.Add(tvOldCheck.SelectedNode.Text);
            tvOldCheck.Nodes.Remove(tvOldCheck.SelectedNode);
         }

       /// <summary>
        /// 比如排队车辆修改为暂停车辆时,排队车辆自己的排序自己重新刷新
        /// </summary>
        /// <param name="OldVehicleStateType_ID">从另一种状态修改为另一个状态时,老的状态值</param>
        public void updateTransportorder_proc(int OldVehicleStateType_ID)
        {
            //获取修改之前的状态值
            //然后在之前的类型代表数据已经移动走了,那排序字段重新赋值排序
            string TransportorderSQL = string.Format("exec UpdateTransportorder_proc {0}", OldVehicleStateType_ID);
            string strMessage = Common.Conn.SqlHelper.ExecSql(TransportorderSQL);
            if (strMessage != string.Empty)
            {
                return;
            }
        }

---当运送单新建成功后排队车辆及时修改为出站状态,      
--本身的排序重新刷新      
CREATE  proc UpdateTransportorder_proc      
 @OldVehicleStateType_ID int --修改之前的车辆类型       
as      
declare UpdateTransportorder_cursor cursor scroll for --声明一个游标      
    
 --要循环的结果集      
SELECT ID ,VehicleStateType_ID from(      
SELECT ID ,VehicleStateType_ID,isnull(a.ReturnTime,getdate()) ReturnTime  from EMTinCar       
LEFT JOIN (      
SELECT max(yt.ID) AS YtID,et.NO,max(ReturnTime) ReturnTime,yt.EMTinCar_ID from YieldTransit yt      
INNER JOIN EMTinCar et on yt.EMTinCar_ID =et .ID       
left JOIN YieldTransitReturn on yt.ID=YieldTransitReturn.YieldTransit_ID      
group BY et.NO ,yt.EMTinCar_ID      
) a ON EMTinCar_ID=EMTinCar.ID      
where VehicleStateType_ID=@OldVehicleStateType_ID) aa order by ReturnTime ASC      
    
    
    
-- --要循环的结果集  应该是修改排序之后再重新赋初始值    
--SELECT ID ,VehicleStateType_ID FROM EMTinCar WHERE VehicleStateType_ID=2     
    
    
    
    
open UpdateTransportorder_cursor      --打开游标      
declare @ID INT ,@VehicleStateType_ID INT,@VehicleOrder_ID INT      
    
    
set @VehicleOrder_ID=1--首先为1      
    
FETCH first from UpdateTransportorder_cursor into @ID,@VehicleStateType_ID      
    
WHILE @@fetch_status=0                      --提取成功,进行下一条数据的提取操作       
begin       
Update EMTinCar Set VehicleOrder_ID=@VehicleOrder_ID Where ID=@ID    --修改行        
    
set @VehicleOrder_ID=@VehicleOrder_ID+1      
    
fetch next from UpdateTransportorder_cursor into @ID,@VehicleStateType_ID    --移动游标字段必须跟查询的结果集一致     
     
end      
CLOSE UpdateTransportorder_cursor      
    
DEALLOCATE UpdateTransportorder_cursor      
      
--exec UpdateTransportorder_proc 1 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值