void GridView_HiddenEditor(object sender, EventArgs e) {
     if (lookupEdit != null) {
         lookupEdit.QueryPopUp -= lookupEdit_QueryPopUp;
         lookupEdit = null;
     }
     if (popupCriteriaEdit != null) {
         popupCriteriaEdit.ButtonClick -= popupCriteriaEdit_ButtonClick;
         popupCriteriaEdit = null;
     }
 }
 void GridView_ShowingEditor(object sender, CancelEventArgs e) {
     var gridView = (DevExpress.XtraGrid.Views.Grid.GridView)sender;
     lookupEdit = gridView.FocusedColumn.ColumnEdit as RepositoryItemLookupEdit;
     if (lookupEdit != null) {
         lookupEdit.QueryPopUp += lookupEdit_QueryPopUp;
     }
     popupCriteriaEdit = gridView.FocusedColumn.ColumnEdit as RepositoryItemPopupCriteriaEdit;
     if (popupCriteriaEdit != null) {
         popupCriteriaEdit.ButtonClick += popupCriteriaEdit_ButtonClick;
     }
 }
 void GridView_HiddenEditor(object sender, EventArgs e)
 {
     if (lookupEdit != null)
     {
         lookupEdit.QueryPopUp -= lookupEdit_QueryPopUp;
         lookupEdit             = null;
     }
     if (popupCriteriaEdit != null)
     {
         popupCriteriaEdit.ButtonClick -= popupCriteriaEdit_ButtonClick;
         popupCriteriaEdit              = null;
     }
 }
        void GridView_ShowingEditor(object sender, CancelEventArgs e)
        {
            var gridView = (DevExpress.XtraGrid.Views.Grid.GridView)sender;

            lookupEdit = gridView.FocusedColumn.ColumnEdit as RepositoryItemLookupEdit;
            if (lookupEdit != null)
            {
                lookupEdit.QueryPopUp += lookupEdit_QueryPopUp;
            }
            popupCriteriaEdit = gridView.FocusedColumn.ColumnEdit as RepositoryItemPopupCriteriaEdit;
            if (popupCriteriaEdit != null)
            {
                popupCriteriaEdit.ButtonClick += popupCriteriaEdit_ButtonClick;
            }
        }
        private void GridView_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
        {
            if (e.RowHandle < 0)
            {
                return;
            }
            var view = sender as GridView;

            if (view == null)
            {
                return;
            }

            if (e.Column.FieldName != nameof(QueryParameter.ParameterValue))
            {
                return;
            }
            var parameter = view.GetRowCellValue(e.RowHandle, nameof(QueryParameter.ParameterName)).ToString().ToLower();
            var type      = _items.FirstOrDefault(x => x.Key.ToString().ToLower() == parameter).Value;

            switch (type)
            {
            case DataTypeEnnum.Enum:
                var currentParameter = View.CollectionSource.List.OfType <QueryParameter>().FirstOrDefault(x => x.ParameterName == parameter);
                var enumTypeString   = currentParameter?.EnumType;
                if (enumTypeString != null)
                {
                    var enumType   = Type.GetType(enumTypeString.Name);
                    var enumEditor = new RepositoryItemEnumEdit(enumType);
                    e.RepositoryItem = enumEditor;
                }
                break;

            case DataTypeEnnum.Datetime:
                var dateEditor = new RepositoryItemDateTimeEdit(HS.ReportCustomDateTimeFormat, HS.ReportCustomDateTimeFormat);
                e.RepositoryItem = dateEditor;
                break;

            case DataTypeEnnum.Text:
                e.RepositoryItem = new RepositoryItemStringEdit();
                break;

            case DataTypeEnnum.Integer:
                e.RepositoryItem = new RepositoryItemIntegerEdit("", "{d:0}");
                break;

            case DataTypeEnnum.BusinessObject:
                var businessObject = (View.CollectionSource.List[e.RowHandle] as QueryParameter)?.BusinessObjectType;
                if (businessObject == null)
                {
                    return;
                }
                IModelMemberViewItem targetType = View.Model.Columns[nameof(QueryParameter.BusinessObjectType)];
                var lookupEditorHelper          = new LookupEditorHelper(Application, ObjectSpace, XafTypesInfo.Instance.FindTypeInfo(businessObject), targetType);
                var editor = new RepositoryItemLookupEdit();
                editor.Init(View.Items.First(), string.Empty, lookupEditorHelper);
                e.RepositoryItem = editor;
                break;

            default:
                return;
            }
        }