Пример #1
0
        private void OnGridContextMenuItemClick(object sender, ItemClickEventArgs e)
        {
            var oldMode = PmGridControl.ClipboardCopyMode;

            try
            {
                var mode = (ClipboardCopyMode)Enum.Parse(typeof(ClipboardCopyMode), e.Item.CommandParameter.ToString());
                PmGridControl.ClipboardCopyMode = mode;
                PmGridControl.ByCheckCopyMode   = false;
                PmGridControl.CopyToClipboard();
            }
            finally
            {
                PmGridControl.ClipboardCopyMode = oldMode;
                PmGridControl.ByCheckCopyMode   = true;
            }
        }
Пример #2
0
 private void OnNewRowAdded(object sender, EventArgs eventArgs)
 {
     try
     {
         PmGridControl.BeginSelection();
         var index = PmGridControl.FindRowByValue(PmConfiguratorData.IsNewRowPropertyName, true);
         if (index >= 0)
         {
             PmGridControl.UnselectAll();
             PmGridControl.SelectItem(index);
             PmGridControl.CurrentColumn = PmGridControl.Columns[PmConfiguratorData.PmCodePropertyName];
             PmGridControl.View.MoveFocusedRow(index);
             PmGridControl.View.FocusedRowHandle = index;
             PmGridControl.View.ShowEditor();
         }
     }
     finally
     {
         PmGridControl.EndSelection();
     }
 }
Пример #3
0
        private void OnCustomUnboundColumnData(object sender, GridColumnDataEventArgs e)
        {
            if (Equals(e.Column.Tag, ColUnboundMethodsFieldName))
            {
                var key     = e.Column.FieldName;
                var row     = PmGridControl.GetRowByListIndex(e.ListSourceRowIndex) as PmConfiguratorData;
                var isvalid = _vm != null && row != null && _vm.ValidatePmMethods(key, row);
                var methods = (IDictionary <string, EditableBusinessObjectCollection <object> >)
                              e.GetListSourceFieldValue(PmConfiguratorData.PmMethodCodesPropertyName);

                if (e.IsGetData)
                {
                    var values = GetTrueMethods(key, methods).ToList();
                    if (!isvalid)
                    {
                        values.Insert(0, Properties.Resources.PmMethodIsUnavailable);
                    }
                    e.Value = values;
                }

                if (e.IsSetData && isvalid)
                {
                    var pms = GetTrueMethods(key, methods);
                    pms.Clear();
                    if (e.Value != null)
                    {
                        foreach (var p in (List <object>)e.Value)
                        {
                            pms.Add(p);
                        }
                    }

                    row.PmMethodCodesPropertyChanged();
                }
            }
        }
Пример #4
0
        private void RestoreColumnsSettings()
        {
            //Восстанавливаем Settings
            try
            {
                //Картинка
                PmGridControl.BeginDataUpdate();
                var column = PmGridControl.Columns.Single(p => p.FieldName == "IsDirty");
                column.DisplayTemplate = (ControlTemplate)Resources[ChangedColumnTemplateKey];
                column.EditSettings    = new ImageEditSettings
                {
                    ShowMenu = false,
                };

                //PM
                column = PmGridControl.Columns.Single(p => p.FieldName == PmConfiguratorData.PmCodePropertyName);
                column.HeaderToolTipTemplate = CreateHeaderSuperTipTemplate(column.Header, null, column.FieldName);
                column.ColumnFilterMode      = ColumnFilterMode.DisplayText;
                column.EditSettings          = new ConfiguratorLookUpEditSettings
                {
                    //LookUpCodeEditor = "PM_PMCODE",
                    ValueMember      = new PM().GetPrimaryKeyPropertyName(),
                    DisplayMember    = "PMNAME",
                    IsPopupAutoWidth = false,
                    AllowNullInput   = true,
                    ShowSizeGrip     = false,
                    IsTextEditable   = false,
                    ItemType         = typeof(PM)
                };
                var bindingPms = new Binding(PmConfigViewModel.PmsPropertyName)
                {
                    //IsAsync = true,
                    UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
                };
                BindingOperations.SetBinding(column.EditSettings, LookUpEditSettingsBase.ItemsSourceProperty, bindingPms);

                //Сущности
                column = PmGridControl.Columns.Single(p => p.FieldName == PmConfiguratorData.ObjectEntityCodePropertyName);
                column.HeaderToolTipTemplate = CreateHeaderSuperTipTemplate(column.Header, null, column.FieldName);
                column.ColumnFilterMode      = ColumnFilterMode.DisplayText;
                column.EditSettings          = new ConfiguratorComboBoxEditSettings
                {
                    LookUpCodeEditor = "SYSOBJECT_ENTITY",
                    //ValueMember = "OBJECTNAME",
                    //DisplayMember = "OBJECTNAME",
                    AllowNullInput             = true,
                    ShowSizeGrip               = false,
                    IsTextEditable             = false,
                    AllowParentGridRefreshData = true
                };

                //Атрибуты
                column = PmGridControl.Columns.Single(p => p.FieldName == PmConfiguratorData.ObjectNamePropertyName);
                column.HeaderToolTipTemplate = CreateHeaderSuperTipTemplate(column.Header, null, column.FieldName);
                column.ColumnFilterMode      = ColumnFilterMode.DisplayText;
                column.EditSettings          = new ConfiguratorComboBoxEditSettings
                {
                    LookUpCodeEditor          = "SYSOBJECT_ATTRIBUTE",
                    LookUpCodeEditorFilterExt = "OBJECTPARENTID > 0",
                    //ValueMember = "OBJECTNAME",
                    //DisplayMember = "OBJECTNAME",
                    AllowNullInput             = true,
                    ShowSizeGrip               = false,
                    IsTextEditable             = false,
                    AllowParentGridRefreshData = true
                };

                //Операции
                var notAllowedPmMethodCellTemplate = TryFindResource(NotAllowedPmMethodCellTemplateKey) as DataTemplate;
                var columnHeaderMethodDescription  = Properties.Resources.ColumnHeaderMethodDescription;
                var pmMethodValue = new PMMethod().GetPrimaryKeyPropertyName();
                foreach (var col in PmGridControl.Columns.Where(p => Equals(p.Tag, ColUnboundMethodsFieldName)))
                {
                    //Не разрешаем редактировать
                    col.AllowEditing = DefaultBoolean.False;
                    col.ReadOnly     = true;

                    col.HeaderToolTipTemplate = CreateHeaderSuperTipTemplate(col.Header, string.Format(columnHeaderMethodDescription, col.Header), col.FieldName);
                    col.CellTemplateSelector  = new PmMethodCellTemplateSelector
                    {
                        NotAllowedPmMethodsCellTemplate = notAllowedPmMethodCellTemplate
                    };
                    col.EditSettings = new ConfiguratorComboBoxEditSettings
                    {
                        //LookUpCodeEditor = "PMMETHOD_PMMETHODCODE",
                        ValueMember    = pmMethodValue,
                        DisplayMember  = PMMethod.PMMETHODNAMEPropertyName,
                        AllowNullInput = true,
                        ShowSizeGrip   = false,
                        IsTextEditable = false,
                        //ShowTooltipForTrimmedText = true,
                        SeparatorString = Environment.NewLine,
                        StyleSettings   = new CheckedComboBoxStyleSettings()
                                          //InsertedItems = new object[] {Properties.Resources.PmMethodIsUnavailable}
                    };
                    var binding = new Binding(PmConfigViewModel.PmMethodsPropertyName)
                    {
                        //IsAsync = true,
                        UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
                    };
                    BindingOperations.SetBinding(col.EditSettings, LookUpEditSettingsBase.ItemsSourceProperty, binding);
                }
            }
            finally
            {
                PmGridControl.EndDataUpdate();
            }
        }
Пример #5
0
        private void OnShowingEditor(object sender, ShowingEditorEventArgs e)
        {
            if (e.RowHandle == DataControlBase.AutoFilterRowHandle)
            {
                return;
            }

            //http://documentation.devexpress.com/#WPF/CustomDocument6135
            CriteriaOperator co = null;
            var hascriteria     = false;

            try
            {
                PmGridControl.BeginDataUpdate();

                var row = e.Row as PmConfiguratorData;
                if (row == null)
                {
                    e.Cancel = true;
                    return;
                }

                var column = e.Column;
                if (column.FieldName == PmConfiguratorData.ObjectEntityCodePropertyName)
                {
                    if (string.IsNullOrEmpty(row.PmCode))
                    {
                        e.Cancel = true;
                        return;
                    }

                    //Если сделать в Loaded не работает клизма
                    var settings = column.EditSettings as IConfiguratorSettingsBase;
                    if (settings != null)
                    {
                        hascriteria = true;
                        var pmkeys = _vm.GetEntityIds();
                        foreach (var p in pmkeys)
                        {
                            co |= new BinaryOperator(SysObject.ObjectIDPropertyName, p, BinaryOperatorType.Equal);
                        }
                        settings.LookupFilterCriteria = co;
                    }
                }
                else if (column.FieldName == PmConfiguratorData.ObjectNamePropertyName)
                {
                    if (string.IsNullOrEmpty(row.PmCode) || string.IsNullOrEmpty(row.OjectEntityCode))
                    {
                        e.Cancel = true;
                        return;
                    }

                    var settings = column.EditSettings as IConfiguratorSettingsBase;
                    if (settings != null)
                    {
                        hascriteria = true;
                        var pmkeys = _vm.GetAttributes(row.OjectEntityCode);

                        //CriteriaOperator co = new BinaryOperator(SysObject.ObjectIDPropertyName, (object)null, BinaryOperatorType.Equal);
                        foreach (var p in pmkeys)
                        {
                            co |= new BinaryOperator(SysObject.ObjectIDPropertyName, p, BinaryOperatorType.Equal);
                        }

                        settings.LookupFilterCriteria = co;
                    }
                }
                else if (Equals(column.Tag, ColUnboundMethodsFieldName)) //Методы
                {
                    //Редактируем в другой форме
                    e.Cancel = true;

                    //if (string.IsNullOrEmpty(column.FieldName) ||
                    //    string.IsNullOrEmpty(row.PmCode) || string.IsNullOrEmpty(row.OjectEntityCode) || string.IsNullOrEmpty(row.ObjectName))
                    //{
                    //    e.Cancel = true;
                    //    return;
                    //}

                    //var settings = column.EditSettings as IConfiguratorSettingsBase;
                    //if (settings != null)
                    //{
                    //    hascriteria = true;
                    //    var pmkeys = _vm.GetAllowedPmMethods(operationCode: column.FieldName,
                    //        objectEntityCode: row.OjectEntityCode, objectName: row.ObjectName);

                    //    var pms =
                    //        _vm.ItemsSource.Where(
                    //            p => p.PmMethodCodes != null && p.Id != row.Id &&
                    //                p.PmCode == row.PmCode && p.OjectEntityCode == row.OjectEntityCode &&
                    //                p.ObjectName == row.ObjectName)
                    //            .SelectMany(p => p.PmMethodCodes.Values)
                    //            .SelectMany(m => m.Cast<string>())
                    //            .Distinct().ToArray();

                    //    foreach (var p in pmkeys)
                    //    {
                    //        if (pms.Any(pm => pm.EqIgnoreCase(p)))
                    //            continue;
                    //        co |= new BinaryOperator("PMMETHODCODE", p, BinaryOperatorType.Equal);
                    //    }

                    //    settings.LookupFilterCriteria = co;
                    //}
                }
            }
            finally
            {
                if (hascriteria)
                {
                    if (ReferenceEquals(co, null))
                    {
                        e.Cancel = true;
                    }
                }
                PmGridControl.EndDataUpdate();
            }
        }