/// <summary>
        /// 根据实体对象的状态改变编辑控件的编辑状态。
        /// </summary>
        /// <param name="bindingCtlList"></param>
        /// <param name="entityState"></param>
        /// <param name="exclusiveCtls"></param>
        public void SetCtlByAllowEditStates(List <ColumnBindingInfo> bindingCtlList, MB.Util.Model.EntityState entityState, params Control[] exclusiveCtls)
        {
            if (bindingCtlList == null || bindingCtlList.Count == 0)
            {
                return;
            }

            foreach (ColumnBindingInfo ctl in bindingCtlList)
            {
                if (!ctl.ColumnPropertyInfo.CanEdit)
                {
                    continue;
                }
                if (string.IsNullOrEmpty(ctl.ColumnPropertyInfo.AllowEditStates))
                {
                    continue;
                }

                if (exclusiveCtls == null || Array.IndexOf(exclusiveCtls, ctl.BindingControl) >= 0)
                {
                    continue;
                }

                string[] states       = ctl.ColumnPropertyInfo.AllowEditStates.Split(',');
                string   currentState = entityState.ToString();
                bool     canEdit      = Array.IndexOf <string>(states, currentState) >= 0;
                setEditControlReadonly(ctl.BindingControl, !canEdit);
            }
        }
        private int Save()
        {
            int re = 0;

            System.ServiceModel.ICommunicationObject commObject = _ClientRuleObject.CreateServerCommunicationObject();
            try {
                int index = 0;
                foreach (TreeListNode node in this.trvLstMain.Nodes)
                {
                    int    id   = (int)node.GetValue(_TreeListHoster.TreeViewCfg.KeyFieldName);
                    string name = (string)node.GetValue(_TreeListHoster.TreeViewCfg.DisplayFieldName);//调试用

                    IList dataSource = _BindingSource.DataSource as IList;
                    foreach (object data in dataSource)
                    {
                        int dataId = (int)MB.Util.MyReflection.Instance.InvokePropertyForGet(data, _TreeListHoster.TreeViewCfg.KeyFieldName);
                        if (id == dataId)
                        {
                            MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(data);
                            if (entityState == MB.Util.Model.EntityState.Persistent)
                            {
                                MB.WinBase.UIDataEditHelper.Instance.SetEntityState(data, MB.Util.Model.EntityState.Modified);
                            }

                            MB.Util.MyReflection.Instance.InvokePropertyForSet(data, _TreeListHoster.TreeViewCfg.OrderFieldName, index);
                            _ClientRuleObject.AddToCache(commObject, (int)_ClientRuleObject.MainDataTypeInDoc, data, false, (string[])null);
                            index++;
                            break;
                        }
                    }
                }
                re = _ClientRuleObject.Flush(commObject);
            }
            catch (Exception ex) {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
            finally {
                try {
                    commObject.Close();
                }
                catch { }
            }
            if (re > 0)
            {
                try {
                    _IsMainTreeNeedRefreshed = true;
                    MB.WinBase.MessageBoxEx.Show("数据保存成功");
                }
                catch (Exception ex) {
                    MB.Util.TraceEx.Write(ex.Message);
                    throw new MB.Util.APPException("数据保存成功,但本地数据更新有误,请关闭窗口手动完成刷新", MB.Util.APPMessageType.DisplayToUser);
                }
            }
            return(re);
        }
Example #3
0
        /// <summary>
        /// 获取实体对象的状态。
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public MB.Util.Model.EntityState GetEntityState(object entity)
        {
            var val = MB.Util.MyReflection.Instance.InvokePropertyForGet(entity, ENTITY_STATE_PROPERTY);

            if (val == null)
            {
                throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY));
            }

            MB.Util.Model.EntityState state = (MB.Util.Model.EntityState)Enum.Parse(typeof(MB.Util.Model.EntityState), val.ToString());
            return(state);
        }
        //根据修改的信息设置实体对象的编辑状态
        private void setCurrentEditItemState()
        {
            object entity = _BindingSource.Current;

            MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity);
            if (entityState == MB.Util.Model.EntityState.Persistent)
            {
                _BindingSource.RaiseListChangedEvents = false;
                MB.WinBase.UIDataEditHelper.Instance.SetEntityState(entity, MB.Util.Model.EntityState.Modified);
                _BindingSource.RaiseListChangedEvents = true;
            }
        }
        /// <summary>
        /// 根据当前实体的状态控制工具拦的状态。
        /// </summary>
        protected virtual void OnToolsButtonValidate()
        {
            if (!_BindingSource.CheckExistsCurrentItem())
            {
                return;
            }

            object entity = _BindingSource.Current;

            if (entity is DataRow)
            {
                throw new MB.Util.APPException("目前框架的实现还不支持DataRow 的绑定编辑处理。");
            }

            bntMoveFirstItem.Enabled    = !_MainBindingGridView.IsFirstRow; // _BindingSource.Position > 0;
            bntMovePreviousItem.Enabled = !_MainBindingGridView.IsFirstRow; // _BindingSource.Position > 0;
            bntMoveLastItem.Enabled     = !_MainBindingGridView.IsLastRow;  // _BindingSource.Position < _BindingSource.Count - 1;
            bntMoveNextItem.Enabled     = !_MainBindingGridView.IsLastRow;  // _BindingSource.Position < _BindingSource.Count - 1;
            // bntPositionItem.Text = _MainBindingGridView.FocusedRowHandle.ToString();// (_BindingSource.Position + 1).ToString();
            bntPositionItem.Text = string.Format("{0}/{1}", _MainBindingGridView.FocusedRowHandle + 1, _MainBindingGridView.RowCount);

            MB.WinBase.Common.ObjectState objectState = MB.WinBase.UIDataEditHelper.Instance.GetObjectState(entity);
            bntAddNewItem.Enabled       = notRejectCommand(UICommandType.AddNew) && true && this.CurrentEditType != ObjectEditType.OpenReadOnly;
            bntCancelItem.Enabled       = ((objectState == ObjectState.New && _BindingSource.Count > 1) || objectState == ObjectState.Modified);
            bntDeleteItem.Enabled       = notRejectCommand(UICommandType.Delete) && (objectState == ObjectState.Modified || objectState == ObjectState.Unchanged) && _BindingSource.Count > 1 && this.CurrentEditType != ObjectEditType.OpenReadOnly;
            bntSaveItem.Enabled         = notRejectCommand(UICommandType.Save) && (objectState == ObjectState.New || objectState == ObjectState.Modified);
            bntSubmitItem.Enabled       = notRejectCommand(UICommandType.Submit) && (objectState == ObjectState.Unchanged);
            bntCancelSubmitItem.Enabled = notRejectCommand(UICommandType.CancelSubmit) && objectState == ObjectState.Validated;

            //根据实体对象的状态变化设置相应的信息.
            MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity);

            //判断是否存在单据状态属性
            bool exists = MB.WinBase.UIDataEditHelper.Instance.CheckExistsDocState(entity);

            if (exists)
            {
                MB.Util.Model.DocState docState = MB.WinBase.UIDataEditHelper.Instance.GetEntityDocState(entity);
                MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlReadOnly(_EditColumnCtlBinding, docState != MB.Util.Model.DocState.Progress);

                OnDocStateChanged(_BindingSource.Current, docState);
            }
            else
            {
                bntSubmitItem.Enabled       = false;
                bntCancelSubmitItem.Enabled = false;
            }
            MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlByAllowEditStates(_EditColumnCtlBinding, entityState);

            //根据模块的需要重新初始化操作菜单项。
            refreshFormatButtonItem();
        }
        /// <summary>
        /// 以相同的状态改变数据实体
        /// </summary>
        public void AcceptChanges()
        {
            this.RaiseListChangedEvents = false;
            foreach (KeyValuePair <int, object> info in this)
            {
                MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(info.Value);
                if (entityState == MB.Util.Model.EntityState.New || entityState == MB.Util.Model.EntityState.Modified)
                {
                    MB.WinBase.UIDataEditHelper.Instance.SetEntityState(info.Value, MB.Util.Model.EntityState.Persistent);
                }

                //需要处理删除的情况
            }
            this.RaiseListChangedEvents = true;
        }
Example #7
0
 /// <summary>
 /// 检查编辑的实体是否已经发生改变。
 /// </summary>
 /// <returns></returns>
 public bool CheckEntityExistsModified()
 {
     if (_CurrentEditEntitys == null)
     {
         return(false);
     }
     foreach (T info in _CurrentEditEntitys)
     {
         MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(info);
         if (entityState == MB.Util.Model.EntityState.New || entityState == MB.Util.Model.EntityState.Modified)
         {
             return(true);
         }
     }
     return(false);
 }
Example #8
0
        /// <summary>
        /// 以相同的状态改变数据实体
        /// </summary>
        public void AcceptChanges()
        {
            if (_CurrentEditEntitys == null)
            {
                return;
            }

            foreach (T info in _CurrentEditEntitys)
            {
                MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(info);
                if (entityState == MB.Util.Model.EntityState.New || entityState == MB.Util.Model.EntityState.Modified)
                {
                    MB.WinBase.UIDataEditHelper.Instance.SetEntityState(info, MB.Util.Model.EntityState.Persistent);
                }
            }
        }
Example #9
0
        /// <summary>
        /// 把数据编辑到符合数据存储的集合类中。
        /// </summary>
        /// <param name="detailEditEntitys"></param>
        /// <param name="dataInDocType"></param>
        /// <param name="lstData"></param>
        public void BuildEditEntitys(List <KeyValuePair <int, object> > detailEditEntitys, int dataInDocType, IList lstData)
        {
            foreach (object entity in lstData)
            {
                var val = MB.Util.MyReflection.Instance.InvokePropertyForGet(entity, ENTITY_STATE_PROPERTY);
                if (val == null)
                {
                    throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY));
                }

                MB.Util.Model.EntityState state = (MB.Util.Model.EntityState)Enum.Parse(typeof(MB.Util.Model.EntityState), val.ToString());
                if (state == MB.Util.Model.EntityState.New || state == MB.Util.Model.EntityState.Modified)
                {
                    detailEditEntitys.Add(new KeyValuePair <int, object>(dataInDocType, entity));
                }
            }
        }
Example #10
0
        /// <summary>
        /// 设置实体对象的状态。
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="state"></param>
        public void SetEntityState(object entity, MB.Util.Model.EntityState state)
        {
            Type t = entity.GetType();

            System.Reflection.PropertyInfo proInfo = t.GetProperty(ENTITY_STATE_PROPERTY);
            if (proInfo == null)
            {
                throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY));
            }

            //由于WCF 客户端代理引用后生产的枚举类型不一样,需要进行转换。
            //以后可以把 MB.Util.Model.EntityState 注册为 WCF 所认识的类型,那么就不需要进行这样的转换。
            try {
                object val = Enum.Parse(proInfo.PropertyType, state.ToString());
                MB.Util.MyReflection.Instance.InvokePropertyForSet(entity, ENTITY_STATE_PROPERTY, val);
            }
            catch (Exception ex) {
                throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, "可能是MB.Util.Model.EntityState 中增加了新的类型值,但客户端没有重新刷新引用引起。");
            }
        }
Example #11
0
        void _BindingSource_ListChanged(object sender, ListChangedEventArgs e)
        {
            if (e.ListChangedType == ListChangedType.ItemChanged)
            {
                object currentEntity = _BindingSource[e.NewIndex];

                MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(currentEntity);
                if (entityState == MB.Util.Model.EntityState.Persistent)
                {
                    MB.WinBase.UIDataEditHelper.Instance.SetEntityState(currentEntity, MB.Util.Model.EntityState.Modified);
                    // _UnSaveEditEntitys.Add(currentEntity);
                }
                if (!_UnSaveEditEntitys.Contains(currentEntity))
                {
                    _UnSaveEditEntitys.Add(currentEntity);
                    MB.WinBase.AppMessenger.DefaultMessenger.Publish(XtraRibbonMdiMainForm.MSG_REQUIRE_REFRESH_BUTTONS);
                }
            }
            else
            {
            }
        }
        void _BindingSource_ListChanged(object sender, ListChangedEventArgs e)
        {
            if (!_CurrentIsDropNode)
            {
                return;
            }

            //判断如果是在 _EditEntitys 的修改 明显禁止的事件就不做处理。
            if (e.ListChangedType == ListChangedType.Reset)
            {
                return;
            }

            if (e.ListChangedType != ListChangedType.ItemChanged)
            {
                return;
            }

            object currentEntity = _BindingSource[e.NewIndex];

            MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(currentEntity);
            if (entityState == MB.Util.Model.EntityState.Persistent)
            {
                MB.WinBase.UIDataEditHelper.Instance.SetEntityState(currentEntity, MB.Util.Model.EntityState.Modified);
                _UnSaveEditEntitys.Add(currentEntity);
                MB.WinBase.AppMessenger.DefaultMessenger.Publish(XtraRibbonMdiMainForm.MSG_REQUIRE_REFRESH_BUTTONS);
            }
            else if (entityState == MB.Util.Model.EntityState.Modified)
            {
                //保证最后加入的未存储容器的对象 Index 都在最后,以保证在树型数据保存中结构存储的正确性。
                if (_UnSaveEditEntitys.Contains(currentEntity))
                {
                    _UnSaveEditEntitys.Remove(currentEntity);
                }

                _UnSaveEditEntitys.Add(currentEntity);
                MB.WinBase.AppMessenger.DefaultMessenger.Publish(XtraRibbonMdiMainForm.MSG_REQUIRE_REFRESH_BUTTONS);
            }
        }
Example #13
0
        //根据修改的信息设置实体对象的编辑状态
        private void setCurrentEditItemState()
        {
            object entity = _EditBindingSource.Current;

            MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity);
            if (entityState == MB.Util.Model.EntityState.Persistent)
            {
                //如果当前单据包含单据状态 那么如果单据已经确认了也不能进行修改
                bool b = MB.WinBase.UIDataEditHelper.Instance.CheckExistsDocState(entity);
                if (b)
                {
                    var docState = MB.WinBase.UIDataEditHelper.Instance.GetEntityDocState(entity);
                    if (docState != Util.Model.DocState.Progress)
                    {
                        return;
                    }
                }
                _EditBindingSource.RaiseListChangedEvents = false;
                MB.WinBase.UIDataEditHelper.Instance.SetEntityState(entity, MB.Util.Model.EntityState.Modified);
                _EditBindingSource.RaiseListChangedEvents = true;
            }
        }
        void bindingNavMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                tsbHideTextBox.Focus();
                try {
                    if (e.ClickedItem.Equals(bntMoveFirstItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.First);

                        //OnBindingSourcePositionChanging(0);
                    }
                    else if (e.ClickedItem.Equals(bntMovePreviousItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.Prev);
                        // OnBindingSourcePositionChanging(_BindingSource.Position);
                    }
                    else if (e.ClickedItem.Equals(bntMoveNextItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.Next);
                        // OnBindingSourcePositionChanging(_BindingSource.Position + 1);
                    }
                    else if (e.ClickedItem.Equals(bntMoveLastItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.Last);
                        //OnBindingSourcePositionChanging(_BindingSource.Count - 1);
                    }
                    else if (e.ClickedItem.Equals(bntAddNewItem))
                    {
                        AddNew();
                    }
                    else if (e.ClickedItem.Equals(bntCancelItem))
                    {
                        Cancel();
                    }
                    else if (e.ClickedItem.Equals(bntSaveItem))
                    {
                        Save();
                    }
                    else if (e.ClickedItem.Equals(bntDeleteItem))
                    {
                        Delete();
                    }
                    else if (e.ClickedItem.Equals(bntSubmitItem))
                    {
                        if (_BindingSource.Current == null)
                        {
                            return;
                        }
                        MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(_BindingSource.Current);
                        if (entityState == MB.Util.Model.EntityState.Modified)
                        {
                            throw MB.Util.APPExceptionHandlerHelper.CreateDisplayToUser("单据数据已经发生改变,请先保存");
                        }
                        Submit();
                    }
                    else if (e.ClickedItem.Equals(bntCancelSubmitItem))
                    {
                        CancelSubmit();
                    }
                    else if (e.ClickedItem.Equals(butExtendItem))
                    {
                        if (_ExtendToolStripButtonMenu != null)
                        {
                            _ExtendToolStripButtonMenu.Show(this, new Point(butExtendItem.Bounds.X, butExtendItem.Height));
                        }
                    }
                    else
                    {
                    }
                    OnToolsButtonValidate();
                }
                catch (Exception ex) {
                    MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
                }
            }
        }
Example #15
0
        /// <summary>
        /// 获取当前编辑单据的状态。
        /// 特殊说明: 在UI 层操作时 由于该方法要频繁进行调用,所以把它实现在UI层 而非作为服务来提供。
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public MB.WinBase.Common.ObjectState GetObjectState(object entity)
        {
            var val = MB.Util.MyReflection.Instance.InvokePropertyForGet(entity, ENTITY_STATE_PROPERTY);

            if (val == null)
            {
                throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY));
            }

            MB.Util.Model.EntityState state = (MB.Util.Model.EntityState)Enum.Parse(typeof(MB.Util.Model.EntityState), val.ToString());

            if (state == MB.Util.Model.EntityState.New)
            {
                return(MB.WinBase.Common.ObjectState.New);
            }
            else if (state == MB.Util.Model.EntityState.Deleted)
            {
                return(MB.WinBase.Common.ObjectState.Deleted);
            }
            else if (state == MB.Util.Model.EntityState.Modified)
            {
                return(MB.WinBase.Common.ObjectState.Modified);
            }
            else if (state == MB.Util.Model.EntityState.Persistent)
            {
                bool existsDocState = MB.Util.MyReflection.Instance.CheckObjectExistsProperty(entity, ENTITY_DOC_STATE);
                if (!existsDocState)
                {
                    return(MB.WinBase.Common.ObjectState.Unchanged);
                }

                MB.Util.Model.DocState docState = GetEntityDocState(entity);
                if ((int)docState >= MB.BaseFrame.SOD.OVER_DOC_STATE_LIMIT)
                {
                    return(Common.ObjectState.OverDocState);
                }

                switch (docState)
                {
                case MB.Util.Model.DocState.Progress:
                    return(MB.WinBase.Common.ObjectState.Unchanged);

                case MB.Util.Model.DocState.Validated:
                    return(MB.WinBase.Common.ObjectState.Validated);

                case MB.Util.Model.DocState.Approved:
                    return(MB.WinBase.Common.ObjectState.Approved);

                case MB.Util.Model.DocState.Completed:
                    return(MB.WinBase.Common.ObjectState.Completed);

                case MB.Util.Model.DocState.Suspended:
                    return(MB.WinBase.Common.ObjectState.Suspended);

                case MB.Util.Model.DocState.Withdraw:
                    return(MB.WinBase.Common.ObjectState.Withdraw);

                default:
                    throw new MB.Util.APPException(string.Format("从DocState 转换到ObjectState 时,对于DocState 还没有进行处理!", docState.ToString()));
                }
            }
            else if (state == MB.Util.Model.EntityState.Transient)
            {
                return(MB.WinBase.Common.ObjectState.None);
            }
            else
            {
                throw new MB.Util.APPException("根据主表的实体对象转换为所认识的对象状态是有误,请检查EntityState 和 DocState!");
            }
        }
Example #16
0
        /// <summary>
        /// 根据当前实体的状态控制工具拦的状态。
        /// </summary>
        protected virtual void OnToolsButtonValidate()
        {
            if (!_MainGridBindingSource.CheckExistsCurrentItem())
            {
                return;
            }

            object entity = _EditBindingSource.Current;

            if (entity is DataRow)
            {
                throw new MB.Util.APPException("目前框架的实现还不支持DataRow 的绑定编辑处理。");
            }

            bntMoveFirstItem.Enabled    = _MainBindingGridView != null && !_MainBindingGridView.IsFirstRow;
            bntMovePreviousItem.Enabled = _MainBindingGridView != null && !_MainBindingGridView.IsFirstRow;
            bntMoveLastItem.Enabled     = _MainBindingGridView != null && !_MainBindingGridView.IsLastRow;
            bntMoveNextItem.Enabled     = _MainBindingGridView != null && !_MainBindingGridView.IsLastRow;
            if (_MainBindingGridView != null)
            {
                bntPositionItem.Caption = string.Format("{0}/{1}", _MainBindingGridView.FocusedRowHandle + 1, _MainBindingGridView.RowCount);
            }

            MB.WinBase.Common.ObjectState objectState = MB.WinBase.UIDataEditHelper.Instance.GetObjectState(entity);
            bntAddNewItem.Enabled = true && this.CurrentEditType != ObjectEditType.OpenReadOnly;
            //判断是否为扩展的操作类型
            bool isExtendDocState = objectState == ObjectState.OverDocState;

            bntDeleteItem.Enabled = !isExtendDocState && (objectState == ObjectState.Modified || objectState == ObjectState.Unchanged) &&
                                    _MainGridBindingSource.Count > 1 && this.CurrentEditType != ObjectEditType.OpenReadOnly;
            bntSaveItem.Enabled         = !isExtendDocState && (objectState == ObjectState.New || objectState == ObjectState.Modified);
            bntSubmitItem.Enabled       = !isExtendDocState && (objectState == ObjectState.Unchanged);
            bntCancelSubmitItem.Enabled = !isExtendDocState && objectState == ObjectState.Validated;

            _BusinessOperateTrace.ResetDocEntity(entity);

            //根据实体对象的状态变化设置相应的信息.
            MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity);

            //判断是否存在单据状态属性
            bool exists = MB.WinBase.UIDataEditHelper.Instance.CheckExistsDocState(entity);

            if (exists)
            {
                MB.Util.Model.DocState docState = MB.WinBase.UIDataEditHelper.Instance.GetEntityDocState(entity);
                if (bntDeleteItem.Enabled)
                {
                    //只有在录入中的数据才可以进行删除
                    bntDeleteItem.Enabled = docState == MB.Util.Model.DocState.Progress;
                }
                MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlReadOnly(_EditColumnCtlBinding, docState != MB.Util.Model.DocState.Progress);

                OnDocStateChanged(_EditBindingSource.Current, docState);
            }
            else
            {
                bntSubmitItem.Enabled       = false;
                bntCancelSubmitItem.Enabled = false;
            }
            MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlByAllowEditStates(_EditColumnCtlBinding, entityState);
            //设置当前编辑Form 为只读属性
            if (_CurrentEditType == ObjectEditType.OpenReadOnly)
            {
                MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlReadOnly(_EditColumnCtlBinding, true);
            }
            //根据模块的需要重新初始化操作菜单项。
            OnAfterRefreshButtonItem();
        }
Example #17
0
        private void bntItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                try {
                    if (e.Item.Equals(bntMoveFirstItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.First);
                        reloadEditBindingSource();
                    }
                    else if (e.Item.Equals(bntMovePreviousItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.Prev);
                        reloadEditBindingSource();
                    }
                    else if (e.Item.Equals(bntMoveNextItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.Next);
                        reloadEditBindingSource();
                    }
                    else if (e.Item.Equals(bntMoveLastItem))
                    {
                        moveFocusPosition(GridDataRowMoveType.Last);
                        reloadEditBindingSource();
                    }
                    else if (e.Item.Equals(bntAddNewItem))
                    {
                        AddNew();
                    }
                    else if (e.Item.Equals(bntSaveItem))
                    {
                        Save();
                    }
                    else if (e.Item.Equals(bntDeleteItem))
                    {
                        Delete();
                        reloadEditBindingSource();
                    }
                    else if (e.Item.Equals(bntSubmitItem))
                    {
                        if (_EditBindingSource.Current == null)
                        {
                            return;
                        }
                        MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(_EditBindingSource.Current);
                        if (entityState == MB.Util.Model.EntityState.Modified)
                        {
                            throw MB.Util.APPExceptionHandlerHelper.CreateDisplayToUser("单据数据已经发生改变,请先保存");
                        }
                        Submit();
                    }
                    else if (e.Item.Equals(bntCancelSubmitItem))
                    {
                        CancelSubmit();
                    }
                    else if (e.Item.Equals(butExtendItem))
                    {
                        if (_ExtendToolStripButtonMenu != null)
                        {
                            Point p = default(Point);

                            foreach (DevExpress.XtraBars.BarItemLink item in barTools.ItemLinks)
                            {
                                if (item.Item.Equals(butExtendItem))
                                {
                                    p.X = item.Bounds.X;
                                }
                            }
                            _ExtendToolStripButtonMenu.Show(this, new Point(p.X, butExtendItem.Height + 6));//6为偏移量
                            return;
                        }
                    }
                    else if (e.Item.Equals(tsButQuit))
                    {
                        this.Close();
                        return;
                    }
                    else
                    {
                    }
                    OnToolsButtonValidate();
                }
                catch (Exception ex) {
                    MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
                }
            }
        }