private void OnRoomReceive(List <Room> rooms) { for (var rowIndex = 0; rowIndex < grid.rows.Count; rowIndex++) { var row = grid.rows[rowIndex]; var performer = (PerformerStatEx)row.ValueObject; performer.Rooms = string.Join(", ", rooms.Where(r => r.Owner == performer.UserId).Select(r => r.Name)); grid.UpdateRow(rowIndex, performer); } var blank = new PerformerStatEx(); var roomsColumnIndex = grid.Columns.FindIndex(col => col.PropertyName == blank.Property(p => p.Rooms)); grid.InvalidateColumns(roomsColumnIndex, roomsColumnIndex); chat.RoomsReceived -= RoomsReceived; }
public void SetupGrid() { var stat = new PerformerStatEx(); try { var metadataSettings = TradeSharpDictionary.Instance.proxy.GetMetadataByCategory("UserInfoEx"); if (metadataSettings != null) { imgListAvatar.ImageSize = new Size((int)metadataSettings["SmallAvatarMaxSize"], (int)metadataSettings["SmallAvatarMaxSize"]); } } catch (Exception ex) { Logger.Info("PerformersFastGrid.SetupGrid", ex); } try { grid.Columns.Clear(); var cols = LoadColumns(); var fontBold = new Font(Font, FontStyle.Bold); foreach (var col in cols) { var column = new FastColumn(col.PropertyName, col.Title) { FormatString = col.FormatString //ColumnMinWidth = 65 }; if (!string.IsNullOrEmpty(col.FormatSuffix)) { column.Tag = col.FormatSuffix; column.CellFormatting += args => { args.resultedString += (string)column.Tag; }; } // определенные колонки имеют определенные настройки if (col.PropertyName == stat.Property(t => t.IsSubscribed)) { column.IsHyperlinkStyleColumn = true; column.HyperlinkActiveCursor = Cursors.Hand; column.ImageList = imageListGrid; } else if (col.PropertyName == stat.Property(t => t.TradeSignalTitle) || col.PropertyName == stat.Property(t => t.Login)) { if (col.PropertyName == stat.Property(t => t.TradeSignalTitle)) { column.ColumnMinWidth = 70; } column.IsHyperlinkStyleColumn = true; column.HyperlinkActiveCursor = Cursors.Hand; column.ColorHyperlinkTextActive = Color.Blue; column.HyperlinkFontActive = fontBold; column.ShowClippedContent = true; } else if (col.PropertyName == stat.Property(t => t.ChartIndex)) { column.ColumnWidth = imgListChartMini.ImageSize.Width + grid.CellPadding * 2; column.ImageList = imgListChartMini; column.IsHyperlinkStyleColumn = true; column.HyperlinkActiveCursor = Cursors.Hand; } else if (col.PropertyName == stat.Property(t => t.UserScore)) { column.IsHyperlinkStyleColumn = true; column.HyperlinkActiveCursor = Cursors.Hand; column.ColorHyperlinkTextActive = Color.Blue; column.HyperlinkFontActive = fontBold; } else if (col.PropertyName == stat.Property(t => t.IsRealAccount)) { column.ImageList = imageListGrid; } else if (col.PropertyName == stat.Property(t => t.AvatarSmallIndex)) { column.ImageList = imgListAvatar; column.ColumnWidth = imgListAvatar.ImageSize.Width + grid.CellPadding * 2; } else if (col.PropertyName == stat.Property(t => t.Rooms)) { column.IsHyperlinkStyleColumn = true; column.HyperlinkActiveCursor = Cursors.Hand; column.ColorHyperlinkTextActive = Color.Blue; column.HyperlinkFontActive = fontBold; } column.Visible = true; grid.Columns.Add(column); } // установка минимальных размеров таблицы (а зачем?) //grid.CalcSetTableMinWidth(); grid.DataBind(grid.rows.Select(r => r.ValueObject).ToList()); grid.CheckSize(true); } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { // мб в режиме дизайнера, о чем контрол никогда не узнает } }
private void SetupGrids() { var blank = new PerformerStatEx(); // участники performersFastGrid.LoadPerformersGridSelectedColumns += () => new List <string> { blank.Property(p => p.ChartIndex), blank.Property(p => p.TradeSignalTitle), blank.Property(p => p.Profit), blank.Property(p => p.SumProfitPoints), blank.Property(p => p.ProfitLastMonthsAbs), }; performersFastGrid.SetupGrid(); // переименовываем и задаем подходящее форматирование var colTradeSignalTitle = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.TradeSignalTitle)); if (colTradeSignalTitle != null) { colTradeSignalTitle.Title = Localizer.GetString("TitleTrader"); colTradeSignalTitle.ShowClippedContent = true; } var column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.Profit)); if (column != null) { column.Title = "%"; column.cellFormatting = null; // отменяем дополнение цифр единицами измерения, которые выполняется в PerformersFastGrid column.colorColumnFormatter = DigitColorColumnFormatter; } column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.SumProfitPoints)); if (column != null) { column.Title = Localizer.GetString("TitlePointsUnits"); column.cellFormatting = null; column.colorColumnFormatter = DigitColorColumnFormatter; } column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.ProfitLastMonthsAbs)); if (column != null) { column.Title = "$"; column.cellFormatting = null; column.FormatString = "f0"; column.colorColumnFormatter = DigitColorColumnFormatter; } performersFastGrid.Grid.CheckSize(true); // статистика statisticsFastGrid.SelectEnabled = false; statisticsFastGrid.Columns.Add(new FastColumn("a", Localizer.GetString("TitleStatisticsIndex")) { ShowClippedContent = true, }); statisticsFastGrid.Columns.Add(new FastColumn("b", " ") { ColumnWidth = 50, colorColumnFormatter = DigitColorColumnFormatter }); // таблицы с позициями PerformerStatistic.SetupDealsGrid(openedOrdersFastGrid, false); PerformerStatistic.SetupDealsGrid(closedOrdersFastGrid, true); // суммарная статистика var blankSummaryStatItem = new SummaryStatItem(string.Empty, Color.Empty); gridSummaryStat.Columns.Add(new FastColumn(blankSummaryStatItem.Property(p => p.ValueString), Localizer.GetString("TitleValue"))); gridSummaryStat.colorFormatter = (object value, out Color? color, out Color? fontColor) => { color = null; var rowData = (SummaryStatItem)value; fontColor = rowData.RowColor; }; gridSummaryStat.UserDrawCellText += PerformerStatistic.GridSummaryStatUserDrawCellText; }