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(); }
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++; } } }
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; } } }