Exemplo n.º 1
0
        /// <summary>
        /// 删除或禁用项
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bbiDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            tlDetail.PostEditor();
            List <ContractBoiNode> lstDeleteNode;
            List <TreeListNode>    lstNode    = tlDetail.GetAllCheckedNodes();
            List <ContractBoiNode> lstBoiNode = lstNode.ConvertAll <ContractBoiNode>(m => tlDetail.GetDataRecordByNode(m) as ContractBoiNode);

            if (lstBoiNode.Count == 0)
            {
                XtraMessageBox.Show("请选中项!");
                return;
            }
            //标识是否已同意删除
            bool blReadyGo = false;

            if (lstBoiNode.Exists(m => m.Children.Count > 0))
            {
                if (XtraMessageBox.Show("删除或禁用父项,将会删除或禁用其全部子项!是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
                blReadyGo = true;
            }

            else if (!blReadyGo)
            {
                if (XtraMessageBox.Show("是否删除项?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
            }
            if (!blReadyGo && lstBoiNode.Exists(m => m.IsUse))
            {
                //if (XtraMessageBox.Show("存在已使用项,将会禁用使用项!是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                //    return;
                XtraMessageBox.Show("存在已关联项,已关联项将不会被删除!", "警告", MessageBoxButtons.OK);
            }
            lstDeleteNode = lstBoiNode.FindAll(m => !lstBoiNode.Exists(n => n.Children.Contains(m)));
            lstDeleteNode.ForEach(m =>
            {
                if (!m.IsUse)
                {
                    viewModel.DeleteNode(m);
                }
                else
                {
                    //viewModel.ChangeNodeStat(m, false);
                }
            });
        }