public ShowSynonymReport(IList <SynonymReportItem> items) { Text = "Отчет о сопоставлениях"; report = new VirtualTable(new TemplateManager <SynonymReportItem>( () => { var row = new Row(); var widths = WidthHolder.ReportWidths; var header = new Header("Пользователь").Sortable("User"); header.InlineStyle.Set(StyleElementType.Width, widths[0]); row.Append(header); header = new Header("Прайс").Sortable("Price"); header.InlineStyle.Set(StyleElementType.Width, widths[1]); row.Append(header); header = new Header("Регион").Sortable("Region"); header.InlineStyle.Set(StyleElementType.Width, widths[2]); row.Append(header); header = new Header("Синоним").Sortable("Synonym"); header.InlineStyle.Set(StyleElementType.Width, widths[3]); row.Append(header); header = new Header("Производитель").Sortable("Producer"); header.InlineStyle.Set(StyleElementType.Width, widths[4]); row.Append(header); header = new Header("Продукты").Sortable("Products"); header.InlineStyle.Set(StyleElementType.Width, widths[4]); row.Append(header); return(row); }, i => { var row = Row.Cells(i.User, i.Price, i.Region, i.Synonym, i.Producer, i.Products); if (i.IsSuspicious == 1) { row.AddClass("Suspicious"); } return(row); })); report.CellSpacing = 1; report.RegisterBehavior(new ToolTipBehavior(), new ColumnResizeBehavior(), new SortInList(), new RowSelectionBehavior()); report.TemplateManager.Source = items.ToList(); report.Behavior <ColumnResizeBehavior>().ColumnResized += column => WidthHolder.Update(report, column, WidthHolder.ReportWidths); report.TemplateManager.ResetColumns(); report.Host .InputMap() .KeyDown(Keys.Space, Suspicios) .KeyDown(Keys.Delete, Delete) .KeyDown(Keys.F11, Reload); Controls.Add(report.Host); var toolBar = new ToolStrip(); Controls.Add(toolBar); var begin = DateTime.Now.AddDays(-1).Date; var end = DateTime.Now.Date; var beginPeriodCalendar = new DateTimePicker { Value = begin, Width = 130, }; var endPeriodCalendar = new DateTimePicker { Value = end, Width = 130, }; toolBar .Label("C") .Host(beginPeriodCalendar) .Label("По") .Host(endPeriodCalendar) .Button("Показать", () => Action(s => { lastBeginDate = beginPeriodCalendar.Value; lastEndDate = endPeriodCalendar.Value; report.TemplateManager.Source = s.ShowSynonymReport(beginPeriodCalendar.Value, endPeriodCalendar.Value).ToList(); })) .Separator() .Button("Suspicious", "Подозрительный (Пробел)", Suspicios) .Button("Удалить (Delete)", Delete) .Button("Обновить (F11)", Reload); MinimumSize = new Size(640, 480); KeyPreview = true; this.InputMap().KeyDown(Keys.Escape, Close); report.Behavior <IRowSelectionBehavior>().SelectedRowChanged += (oldIndex, newIndex) => { var item = report.Translate <SynonymReportItem>(report.ViewPort.GetRow(newIndex)); if (item.IsSuspicious == 0) { toolBar.Items["Suspicious"].Text = "Подозрительный (Пробел)"; } else { toolBar.Items["Suspicious"].Text = "Не подозрительный (Пробел)"; } }; }
public ShowProductsAndProducers(ProducerDto producer, List <ProducerDto> producers, List <ProductAndProducer> productAndProducers) { this.producer = producer; this.productAndProducers = productAndProducers; this.producers = producers; MinimumSize = new Size(640, 480); Size = new Size(640, 480); Text = "Продукты"; KeyPreview = true; KeyDown += (sender, args) => { if (args.KeyCode == Keys.Escape) { Close(); } }; productsAndProducers = new VirtualTable(new TemplateManager <ProductAndProducer>( () => { var row = Row.Headers(new Header().AddClass("CheckBoxColumn")); var header = new Header("Продукт").Sortable("Product"); header.InlineStyle.Set(StyleElementType.Width, WidthHolder.ProductsAndProducersWidths[0]); row.Append(header); header = new Header("Производитель").Sortable("Producer"); header.InlineStyle.Set(StyleElementType.Width, WidthHolder.ProductsAndProducersWidths[1]); row.Append(header); header = new Header("Количество предложений").Sortable("OffersCount"); header.InlineStyle.Set(StyleElementType.Width, WidthHolder.ProductsAndProducersWidths[2]); row.Append(header); header = new Header("Количество заказов").Sortable("OrdersCount"); header.InlineStyle.Set(StyleElementType.Width, WidthHolder.ProductsAndProducersWidths[3]); row.Append(header); return(row); }, offer => { var row = Row.Cells(offer.Product, offer.Producer, offer.OffersCount, offer.OrdersCount); if (offer.ExistsInRls == 0) { row.AddClass("NotExistsInRls"); } if (offer.ProducerId != producer.Id) { row.Prepend(new CheckBoxInput(offer.Selected)); } else { row.Prepend(new Cell()); } return(row); })); productsAndProducers.CellSpacing = 1; productsAndProducers.RegisterBehavior( new ToolTipBehavior(), new SortInList(), new RowSelectionBehavior(), new ColumnResizeBehavior(), new InputSupport(input => { var row = (Row)input.Parent.Parent; var productAndProducer = productsAndProducers.Translate <ProductAndProducer>(row); ((IList <ProductAndProducer>)productsAndProducers.TemplateManager.Source) .Where(p => p.ProducerId == productAndProducer.ProducerId) .Each(p => p.Selected = ((CheckBoxInput)input).Checked); productsAndProducers.RebuildViewPort(); })); productsAndProducers.TemplateManager.Source = productAndProducers; productsAndProducers.Behavior <ColumnResizeBehavior>().ColumnResized += column => WidthHolder.Update(productsAndProducers, column, WidthHolder.ProductsAndProducersWidths); productsAndProducers.Host.InputMap() .KeyDown(Keys.F3, Join) .KeyDown(Keys.F4, ShowOffersForProducerId) .KeyDown(Keys.F5, ShowOffersForCatalogId); var toolStrip = new ToolStrip(); toolStrip .Button(String.Format("Объединить c {0} (F3)", producer.Name), Join) .Button("Предложения для производителя (F4)", ShowOffersForProducerId) .Button("Предложения для продукта (F5)", ShowOffersForCatalogId); productsAndProducers.TemplateManager.ResetColumns(); Controls.Add(productsAndProducers.Host); Controls.Add(toolStrip); }