public static string GetPersistentColumnsWidthString(XamGrid xamGrid)
 {
     StringBuilder str = new StringBuilder();
     str.Append("<ColumnsWidth Data=\"");
     foreach (var item in xamGrid.Columns.DataColumns)
     {
         str.Append(item.ActualWidth);
         str.Append(",");
     }
     str.Append("\"/>");
     return str.ToString();
 }
Esempio n. 2
0
        private static Workbook ExportWorkbook(XamGrid grid)
        {
            XamGridExcelExporter export = new XamGridExcelExporter();

            // Create a Workbook object and add a sheet in it.
            Workbook  workbook  = new Workbook();
            Worksheet worksheet = workbook.Worksheets.Add("Sheet1");

            workbook.SetCurrentFormat(WorkbookFormat.Excel2007);

            export.Export(grid, workbook);

            return(workbook);
        }
        public static void ConfigureGrid(XamGrid dataGrid, DataTableEx userTable, enumTimeDiscreteType discreteType, enumTypeInformation typeInformation,
                                         string format, bool isHalfhours, DataTemplateSelector flagTemplateSelector, bool isCumulateDrums = false, bool isDateTimeGroupingGridControlXam = true,
                                         IValueConverter converter = null)
        {
            if (dataGrid == null || userTable == null)
            {
                return;
            }

            var view = userTable.DefaultView;

            try
            {
                //dataGrid.BeginInit();
                //dataGrid.FieldSettings.AllowEdit = false;

                view.AllowDelete = view.AllowEdit = view.AllowNew = false;

                //var style = new Style(typeof(XamNumericEditor));
                //style.Setters.Add(new Setter(ValueEditor.FormatProperty, format));

                if (isHalfhours)
                {
                    SetHalfhoursColumnsForXamDataGrid(dataGrid, userTable, discreteType, typeInformation, format, isCumulateDrums, isDateTimeGroupingGridControlXam);
                }
                //else
                //{
                //    SetValidateColumnsForXamDataGrid(dataGrid, userTable, flagTemplateSelector, converter);
                //}

                //view.Table = null;
            }
            finally
            {
                //dataGrid.EndInit();
            }

            //dataGrid.Dispatcher.BeginInvoke((System.Action) (() =>
            //{
            dataGrid.ItemsSource = view;
            //}), DispatcherPriority.Background);
        }
 public static void LoadColumnsWidth(XamGrid xamGrid, XElement xml)
 {
     XElement widthElement = xml.Element("ColumnsWidth");
     if (widthElement != null)
     {
         string widthData = widthElement.Attribute("Data").Value;
         string[] allWidth = widthData.Split(',');
         int i = 0;
         foreach (string widthStr in allWidth)
         {
             if (!string.IsNullOrEmpty(widthStr))
             {
                 double width = 0;
                 if (double.TryParse(widthStr, out width))
                 {
                     xamGrid.Columns.DataColumns[i].Width = new ColumnWidth(width, false);
                 }
             }
             i++;
         }
     }
 }
Esempio n. 5
0
        public static void ExportExcel(XamGrid grid)
        {
            SaveFileDialog saveDialog = new SaveFileDialog();

            saveDialog.DefaultExt = "xlsx";
            saveDialog.Filter     = "Excel Workbook (.xlsx)|*.xlsx";

            if (saveDialog.ShowDialog().Value)
            {
                try
                {
                    Stream stream = saveDialog.OpenFile();

                    Workbook exportedWorkbook = ExportWorkbook(grid);
                    exportedWorkbook.Save(stream);
                    stream.Close();
                }
                catch (Exception exc)
                {
                    MessageBox.Show(exc.Message);
                }
            }
        }
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            this._TradingSummaryGrid = this.GetTemplateChild("TradingSummaryGrid") as XamGrid;

            this._TradingSummaryGrid.Loaded += new RoutedEventHandler(delegate(object sender, RoutedEventArgs e)
            {
                if (!this._IsLoaded)
                {
                    this._IsLoaded = true;
                }
            });

            if (this.ItemsSource != null)
            {
                this._TradingSummaryGrid.ItemsSource = this.ItemsSource;
            }
            this._TradingSummaryGrid.RowExpansionChanged += new EventHandler<RowExpansionChangedEventArgs>(this._TradingSummaryGrid_RowExpansionChanging);
        }
        static CellsPanel GetSelectedRow(XamGrid grid)
        {
            var row = grid.ActiveCell?.Row;

            return(row?.Control);
        }
        static void SetHalfhoursColumnsForXamDataGrid(XamGrid dataGrid, DataTableEx userTable,
                                                      enumTimeDiscreteType discreteType, enumTypeInformation typeInformation, string format, bool isCumulateDrums, bool isDateTimeGroupingGridControlXam)
        {
            //var nameStyle = dataGrid.FindResource("TIChanelName") as Style;

            Style labelStyle = null;

            //try
            //{
            //    labelStyle = dataGrid.FindResource("LabelObjectStyle") as Style;
            //    dataGrid.FieldSettings.LabelPresenterStyle = labelStyle;
            //}
            //catch
            //{
            //}

            var groupLabelTemplate     = dataGrid.FindResource("GroupLabelObjectTemplate") as DataTemplate;
            var channelLabelTemplate   = dataGrid.FindResource("ChannelLabelObjectTemplate") as DataTemplate;
            var unchannelLabelTemplate = dataGrid.FindResource("LabelUnchannelTemplate") as DataTemplate;

            var vTemplate = dataGrid.FindResource("FValueTemplate") as DataTemplate;
            var vTemplateNoBindMeasure = Application.Current.FindResource("FValueTemplateNoBindMeasureFormTemplate") as DataTemplate;

            var vFreeHierarchyObjectTemplate = Application.Current.FindResource("FreeHierarchyObjectTemlate") as DataTemplate;

            var columnWidth = new ColumnWidth(105, false);

            //var widthValue = new FieldLength(105);
            //var widthFreeHier = new FieldLength(270);

            var comparer          = new IFValueComparer();
            var dtConverter       = new DateTimeConverter();
            var dtToolTiptemplate = Application.Current.Resources[ConstantHelper.DateTimeTemplateName] as DataTemplate;

            var measure = dataGrid.FindParent <IMeasure>();

            dataGrid.Resources["IMeasure"] = measure;

            //var fieldLayout = dataGrid.ColumnLayouts[0];

            //TemplateField dtField;

            try
            {
                //fieldLayout.Fields.BeginUpdate();
                //fieldLayout.SortedFields.BeginUpdate();

                var dtCol = userTable.Columns["EventDateTime"];

                var dtField = new TextColumn
                {
                    Key        = dtCol.ColumnName,
                    IsReadOnly = true,
                    //DataType = dtCol.DataType,
                    HeaderText = dtCol.Caption,
                    //Width = new FieldLength(95),
                    Width                      = new ColumnWidth(90, false),
                    ValueConverter             = dtConverter,
                    HorizontalContentAlignment = HorizontalAlignment.Center,
                    VerticalContentAlignment   = VerticalAlignment.Center,
                    AllowToolTips              = AllowToolTips.Always,
                    ToolTipContentTemplate     = dtToolTiptemplate,
                    DataViewType               = typeof(DateTime),
                    IsSortable                 = true,
                    IsSorted                   = SortDirection.Ascending,
                    GroupByComparer            = new ByDayComparer(),
                    //Settings = { LabelPresenterStyle = dataGrid.FindResource("TimeStyle") as Style }
                };

                dataGrid.Columns.Add(dtField);

                if (isCumulateDrums)
                {
                    //dtField.Settings.CellValuePresenterStyle =
                    //    XamDataGridHelper.DataTemplateToCellValuePresenterStyle(ConstantHelper.DateTimeTemplateName);


                    dtConverter.Parametr = ConstantHelper.DateTimeTemplateName;

                    //dtField.ItemTemplate = Application.Current.Resources[ConstantHelper.DateTimeTemplateName] as DataTemplate;
                }
                else
                {
                    string dataTemplateToCellValuePresenterStyleName;
                    //-------------------------------
                    switch (discreteType)
                    {
                    case enumTimeDiscreteType.DB24Hour:
                        dataTemplateToCellValuePresenterStyleName = ConstantHelper.DateTemplateName;
                        break;

                    case enumTimeDiscreteType.DBMonth:
                        dataTemplateToCellValuePresenterStyleName = ConstantHelper.MonthName;
                        break;

                    default:
                        dataTemplateToCellValuePresenterStyleName = ConstantHelper.DateTimeTemplateName;
                        break;
                    }

                    dtConverter.Parametr = dataTemplateToCellValuePresenterStyleName;
                }

                dtField.HeaderText = "Время";

                //dataGrid.GroupBySettings.GroupByColumns.Add(dtField);

                //if (discreteType == enumTimeDiscreteType.DB24Hour)
                //{
                //dtField.Settings.GroupByMode = FieldGroupByMode.Month;
                //dtField.Settings.GroupByRecordPresenterStyle =
                //Application.Current.FindResource("MonthYearXamDataGridStyle") as Style;
                //}
                //else
                //{
                //dtField.Settings.GroupByMode = FieldGroupByMode.Date;
                //}


                //SummaryCalculator statType;
                //string prefix;
                //if (typeInformation == enumTypeInformation.Power)
                //{
                //    statType = new FValueAvgCalculator(format);
                //    prefix = "Сред:";
                //}
                //else
                //{
                //    statType = new FValueSumCalculator(format);
                //    prefix = "Сум:";
                //}

                //var stringFormat = prefix + " {0:" + format + "}";
                var stringFormat = " {0:" + format + "}";

                var dfc = new DetailFieldInfoEqualityComparer();

                //FieldGroup fieldGroupByObject = null;
                //FieldGroup fieldGroupByMeasureCategory = null;
                //EnumMeasureUnitCategory? previousMeasureCategory = null; //Для определения групповать или нет по категории

                foreach (var colGroupByObject in userTable.Columns
                         .Cast <DataColumn>()
                         .Where(c => c.ColumnName != "EventDateTime")
                         .Select(c =>
                {
                    DetailFieldInfo fieldInfo;
                    userTable.TryGetIndexByItemName(c.ColumnName, out fieldInfo);

                    return(new Tuple <DetailFieldInfo, DataColumn>(fieldInfo, c));
                })
                         .GroupBy(c => c.Item1, dfc))
                {
                    var fieldInfo = colGroupByObject.Key;
                    if (fieldInfo == null || fieldInfo.ChannelType == 0)
                    {
                        //Группировать не нужно
                        foreach (var colByObject in colGroupByObject)
                        {
                            FValueSummaryDefinition summaryDefinition;
                            var fld = AddFieldAndSummary(colByObject.Item2, comparer,
                                                         fieldInfo != null && fieldInfo.UseMeasureModule, vTemplate, vTemplateNoBindMeasure, columnWidth);

                            if (fieldInfo != null && fieldInfo.Id != null)
                            {
                                fld.HeaderTemplate = groupLabelTemplate;
                                fld.Label          = colByObject.Item1.Id;
                            }
                            else
                            {
                                fld.HeaderText = colByObject.Item2.Caption;
                            }

                            //fld.HeaderText = (fieldInfo == null ? colByObject.Item2.Caption : (object)colByObject.Item1).ToString();
                            dataGrid.Columns.Add(fld);
                            //if (summaryDefinition != null)
                            //{
                            //    fieldLayout.SummaryDefinitions.Add(summaryDefinition);
                            //}
                        }
                    }
                    else
                    {
                        var fieldGroupByObject = new GroupColumn
                        {
                            //Label = fieldInfo.Id,
                            Key   = fieldInfo.ColumnName + "___",
                            Label = fieldInfo.Id,
                            //HeaderText = fieldInfo.Id.ToString(),
                            HeaderTemplate = groupLabelTemplate,
                        };

                        dataGrid.Columns.Add(fieldGroupByObject);

                        //Группируем по объектам
                        foreach (var colGroupByMeasureCategory in colGroupByObject.GroupBy(c => c.Item1.MeasureUnitUn.SubstringQuantityUn()))
                        {
                            var colGroupByMeasureCategoryList = colGroupByMeasureCategory.ToList();

                            if (!string.IsNullOrEmpty(colGroupByMeasureCategory.Key) && colGroupByMeasureCategoryList.Count > 1)
                            {
                                //Есть категории ед. измерения и их несколько
                                var fieldGroupByMeasureCategory = new GroupColumn
                                {
                                    Label = new LabelMeasureQuantity
                                    {
                                        MeasureQuantityType_UN = colGroupByMeasureCategory.Key,
                                    },
                                    Key = fieldInfo.Id + "_" + colGroupByMeasureCategory.Key,
                                };

                                fieldGroupByObject.Columns.Add(fieldGroupByMeasureCategory);

                                foreach (var colByMeasure in colGroupByMeasureCategoryList)
                                {
                                    FValueSummaryDefinition summaryDefinition;
                                    var fld = AddFieldAndSummary(colByMeasure.Item2, comparer, fieldInfo.UseMeasureModule,
                                                                 vTemplate,
                                                                 vTemplateNoBindMeasure,
                                                                 columnWidth);
                                    //isCumulateDrums, statType, stringFormat, fieldLayout, out summaryDefinition);

                                    //fld.Label = colByMeasure.Item1;

                                    fld.HeaderTemplate = colByMeasure.Item1.ChannelType == 0 ? unchannelLabelTemplate : channelLabelTemplate;
                                    fld.Label          = colByMeasure.Item1;

                                    fieldGroupByMeasureCategory.Columns.Add(fld);
                                    //if (summaryDefinition != null)
                                    //{
                                    //    fieldLayout.SummaryDefinitions.Add(summaryDefinition);
                                    //}
                                }
                            }
                            else
                            {
                                //Нет категорий, или она одна
                                var fielgGroupByReplacedTiDict = new Dictionary <string, GroupColumn>();
                                foreach (var colByMeasure in colGroupByMeasureCategoryList)
                                {
                                    if (colByMeasure.Item2.ColumnName.StartsWith("ovInfo"))
                                    {
                                        //Это информация об ОВ
                                        //var hoc = new HierObjectsConverterComparer();

                                        var fld = AddField(colByMeasure.Item2, fieldInfo.UseMeasureModule,
                                                           vFreeHierarchyObjectTemplate,
                                                           vFreeHierarchyObjectTemplate, columnWidth);

                                        //widthFreeHier

                                        fld.Label = "Замещаемые ТИ";
                                        //fld.Settings.FilterOperandUIType = FilterOperandUIType.DropDownList;
                                        //fld.Settings.FilterLabelIconDropDownType = FilterLabelIconDropDownType.MultiSelectExcelStyle;
                                        //fld.Settings.GroupByComparer = hoc;

                                        //fld.ValueToTextConverter = new HierObjectsConverter();
                                        //fld.Settings.FilterComparer = new HierObjectsConverterComparer();
                                        fieldGroupByObject.Columns.Add(fld);
                                    }
                                    else
                                    {
                                        GroupColumn fielgGroupByReplacedTi = null;

                                        //Группируем по замещаемой ТИ
                                        if (colByMeasure.Item2.ColumnName.StartsWith("ovValue") &&
                                            !fielgGroupByReplacedTiDict.TryGetValue(
                                                colByMeasure.Item1.GroupByReplacedTiName, out fielgGroupByReplacedTi))
                                        {
                                            fielgGroupByReplacedTi = new GroupColumn
                                            {
                                                Label      = colByMeasure.Item1.ReplacedId,
                                                Key        = colByMeasure.Item1.ColumnName + "_",
                                                HeaderText = colByMeasure.Item1.ReplacedId.ToString(),
                                            };

                                            fielgGroupByReplacedTiDict[colByMeasure.Item1.GroupByReplacedTiName] =
                                                fielgGroupByReplacedTi;
                                        }

                                        //FValueSummaryDefinition summaryDefinition;
                                        var fld = AddFieldAndSummary(colByMeasure.Item2, comparer, fieldInfo.UseMeasureModule,
                                                                     vTemplate,
                                                                     vTemplateNoBindMeasure,
                                                                     columnWidth);
                                        //isCumulateDrums, statType, stringFormat, fieldLayout, out summaryDefinition);

                                        fld.Label          = colByMeasure.Item1;
                                        fld.HeaderTemplate = colByMeasure.Item1.ChannelType == 0 ? unchannelLabelTemplate : channelLabelTemplate;

                                        if (fielgGroupByReplacedTi != null)
                                        {
                                            fielgGroupByReplacedTi.Columns.Add(fld);
                                        }
                                        else
                                        {
                                            fieldGroupByObject.Columns.Add(fld);
                                        }

                                        //if (summaryDefinition != null)
                                        //{
                                        //    fieldLayout.SummaryDefinitions.Add(summaryDefinition);
                                        //}

                                        //if (colByMeasure.Item1.IsOv)
                                        //{
                                        //    //Если это ОВ, добавляем суммарную информацию о неразнесенных значениях
                                        //    var unWritedOvs = new FValueSummaryDefinition
                                        //    {
                                        //        SourceFieldName = colByMeasure.Item2.ColumnName,
                                        //        Calculator = new FValueSumUnreplacedCalculator(format),
                                        //        StringFormat = stringFormat,
                                        //        UseMeasureModule = fieldInfo.UseMeasureModule,
                                        //    };

                                        //    fieldLayout.SummaryDefinitions.Add(unWritedOvs);
                                        //}
                                    }
                                }

                                if (fielgGroupByReplacedTiDict.Count > 0)
                                {
                                    foreach (var c in fielgGroupByReplacedTiDict.Values)
                                    {
                                        fieldGroupByObject.Columns.Add(c);
                                    }
                                }
                            }
                        }
                    }
                }



                //if (isDateTimeGroupingGridControlXam &&
                //    (discreteType == enumTimeDiscreteType.DBHalfHours || discreteType == enumTimeDiscreteType.DBHours ||
                //     discreteType == enumTimeDiscreteType.DB24Hour))
                //{
                //    //dtField.Settings.AllowSummaries = false;
                //    dtField.Settings.AllowGroupBy = true;


                //    fieldLayout.SortedFields.Add(new FieldSortDescription("EventDateTime", ListSortDirection.Ascending,
                //        true));
                //}
                //else
                //{
                //    dtField.DisplayTemplate = Application.Current.Resources[ConstantHelper.DateTimeTemplateName] as DataTemplate;

                //    //dtField.Settings.CellValuePresenterStyle =
                //    //    XamDataGridHelper.DataTemplateToCellValuePresenterStyle(ConstantHelper.DateTimeTemplateName);
                //}

                //var consumptionScheduleField = fieldLayout.Fields.FirstOrDefault(ff => ff.Name == "ConsumptionSchedule");
                //if (consumptionScheduleField != null)
                //{
                //    consumptionScheduleField.Label = "Тип. потр.";
                //}

                //var consumptionSchedulePercentField = fieldLayout.Fields.FirstOrDefault(ff => ff.Name == "ConsumptionSchedulePercent");
                //if (consumptionSchedulePercentField != null)
                //{
                //    consumptionSchedulePercentField.Label = "Тип. потр. %";
                //}
            }
            finally
            {
                // fieldLayout.SortedFields.EndUpdate();
                //fieldLayout.Fields.EndUpdate();
            }

            //dataGrid.FieldLayoutSettings.FixedFieldUIType = FixedFieldUIType.Splitter;
            //dataGrid.FieldSettings.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;

            if (userTable.Columns.Count < 20)
            {
                //из-за того что тормоза ограничиваем
                //dataGrid.FieldSettings.SummaryDisplayArea = dataGrid.FieldSettings.SummaryDisplayArea | SummaryDisplayAreas.InGroupByRecords;
            }

            //if (userTable.Columns.Count < 1000)
            //{
            //    dataGrid.RecordsInViewChanged += ExpandFirstRecord;
            //}
        }
 //private void QuotationProperty_PropertyValueChanged(object sender, Xceed.Wpf.Toolkit.PropertyGrid.PropertyValueChangedEventArgs e)
 //{
 //    if (e.NewValue.ToString() != e.OldValue.ToString())
 //    {
 //        this._IsChange = true;
 //        this._Value = e.NewValue.ToString();
 //        //this._DisplayName = this.QuotationProperty.SelectedProperty.ToString();
 //        //this._ChangeQuotation = this.QuotationProperty.SelectedObject as InstrumentQuotation;
 //        // ConsoleClient.Instance.UpdateExchangeQuotation(instrument.ExchangeCode, updateNode);
 //    }
 //}
 //private void QuotationProperty_SelectedPropertyItemChanged(object sender, RoutedPropertyChangedEventArgs<Xceed.Wpf.Toolkit.PropertyGrid.PropertyItemBase> e)
 //{
 //    if (this._IsChange)
 //    {
 //        InstrumentQuotation instrument = this._ChangeQuotation;
 //        QuotePolicyDetailSet set = new QuotePolicyDetailSet();
 //        set.ExchangeCode = instrument.ExchangeCode;
 //        set.QoutePolicyId = instrument.QuotationPolicyId;
 //        set.InstrumentId = instrument.InstruemtnId;
 //        set.type = (QuotePolicyEditType)Enum.Parse(typeof(QuotePolicyEditType), this._DisplayName);
 //        if (this._DisplayName == "PriceType")
 //        {
 //            set.Value = (int)Enum.Parse(typeof(PriceType), this._Value);
 //        }
 //        else if (this._DisplayName == "IsOriginHiLo")
 //        {
 //            if (bool.Parse(this._Value))
 //            {
 //                set.Value = 1;
 //            }
 //            else
 //            {
 //                set.Value = 0;
 //            }
 //        }
 //        else
 //        {
 //            set.Value = int.Parse(this._Value);
 //        }
 //        ConsoleClient.Instance.UpdateExchangeQuotation(set);
 //        this._IsChange = false;
 //    }
 //}
 private void New_Click(object sender, RoutedEventArgs e)
 {
     XamGrid newGrid = new XamGrid();
     newGrid = this.QuotationGrid;
     ExchangeQuotationViewModel FilterView = new ExchangeQuotationViewModel();
 }
        private void FilterOrderTask(XamGrid grid,string filterValue, string columnName, ComparisonOperator comparisonOperator)
        {
            grid.FilteringSettings.AllowFiltering = Infragistics.Controls.Grids.FilterUIType.FilterMenu;
            grid.FilteringSettings.FilteringScope = FilteringScope.ColumnLayout;

            grid.Columns.DataColumns[columnName].FilterColumnSettings.FilterCellValue = filterValue;
            foreach (FilterOperand f in grid.Columns.DataColumns[columnName].FilterColumnSettings.RowFilterOperands)
            {
                if (f.ComparisonOperatorValue == comparisonOperator)
                {
                    grid.Columns.DataColumns[columnName].FilterColumnSettings.FilteringOperand = f;
                    break;
                }
            }
        }