コード例 #1
0
ファイル: frmGuest.xaml.cs プロジェクト: jackjet870/IM-2
        /// <summary>
        /// Se ejecuta antes de que entre en modo edicion alguna celda
        /// </summary>
        /// <history>
        /// [edgrodriguez] 11/08/2016  Created.
        /// </history>
        private void dtgGifts_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
        {
            //Preguntamos si desea agregar GuestStatusType para el calculo de costos
            if (cmbGuestStatus.SelectedValue == null && !_dontShowAgainGuestStatus)
            {
                MessageBoxResult result = UIHelper.ShowMessage("We recommend first select the status of the guest, that would help us calculate costs and prices, do you want to select it now?", MessageBoxImage.Question, "Intelligence Marketing");
                if (result == MessageBoxResult.Yes)
                {
                    e.Cancel                  = true;
                    _hasError                 = true;
                    _isCellCancel             = true;
                    _dontShowAgainGuestStatus = false;
                    cmbGuestStatus.Focus();
                }
                else
                {
                    _dontShowAgainGuestStatus = true;
                }
            }
            else
            {
                _hasError     = false;
                _isCellCancel = false;
            }

            //Si el grid no esta en modo edicion, permite hacer edicion.
            if (!GridHelper.IsInEditMode(dtgGifts) && !_hasError)
            {
                dtgGifts.BeginningEdit -= dtgGifts_BeginningEdit;
                //Obtenemos el objeto de la fila que se va a editar
                InvitationGift invitationGift = e.Row.Item as InvitationGift;
                //Obtenemos la celda que vamos a validar
                _igCurrentCell = dtgGifts.CurrentCell;
                //Hacemos la primera validacion
                InvitationValidationRules.StartEdit(ref invitationGift, ref _igCurrentCell, dtgGifts, ref _hasError);
                //Si tuvo algun error de validacion cancela la edicion de la celda.
                e.Cancel = _hasError;
                dtgGifts.BeginningEdit += dtgGifts_BeginningEdit;
            }
            //Si ya se encuenta en modo EDIT cancela la edicion, para no salirse de la celda sin hacer Commit antes
            else
            {
                e.Cancel = true;
            }
        }
コード例 #2
0
ファイル: frmGuest.xaml.cs プロジェクト: jackjet870/IM-2
        /// <summary>
        /// Se ejecuta cuando la celda en edicion pierde el foco
        /// </summary>
        /// <history>
        /// [edgrodriguez] 16/08/2016  Created.
        /// </history>
        private void dtgGifts_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            //Si paso las validaciones del preparingCellForEdit
            if (!_hasError)
            {
                //Si viene en modo Commit
                if (e.EditAction == DataGridEditAction.Commit)
                {
                    //esta bandera se pone en falso por que No se ha cancelado la edicion de la celda
                    _isCellCancel = false;
                    //Obtenemos el Objeto
                    InvitationGift invitationGift = e.Row.Item as InvitationGift;

                    //Bandera que checata que todo salga bien en la validacion siguiente.
                    bool _hasErrorValidateEdit = false;
                    //Validamos la celda
                    // InvitationValidationRules.ValidateEdit(ref invitationGift, ref _hasErrorValidateEdit, ref _IGCurrentCell);

                    //Si Paso las validaciones
                    if (!_hasErrorValidateEdit)
                    {
                        //Obtenemos el program
                        InvitationValidationRules.AfterEdit(_guestId, dtgGifts, ref invitationGift, _igCurrentCell, ref txtGiftTotalCost, ref txtGiftTotalPrice, ref txtGiftMaxAuth, cmbGuestStatus.SelectedItem as GuestStatusType, _catObj.Program);
                    }
                    //Si fallaron las validaciones del AfterEdit se cancela la edicion de la celda.
                    else
                    {
                        e.Cancel = true;
                    }
                }
                //Si entra en modo Cancel Se enciende esta bandera ya que servira en RowEditEnding
                else
                {
                    _isCellCancel = true;
                }
            }
        }