public Batch() { InitializeComponent(); Loaded += (sender, args) => { ApplyStyles(); }; DataGridHelper.CalculateColumnWidths(ReportLines); DataGridHelper.CalculateColumnWidth(ReportLines, "Нет", "Заказано"); DataGridHelper.CalculateColumnWidth(ReportLines, "Нет", "Есть производитель"); DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Цена поставщика"); DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Цена"); DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Количество"); DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Заказ"); DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Сумма"); DataGridHelper.CalculateColumnWidth(ReportLines, "0000000000000", "Штрихкод"); new Editable().Attach(Offers); DataGridHelper.CalculateColumnWidths(Offers); DataGridHelper.CalculateColumnWidth(HistoryOrders, "00.00.0000", "Срок годн."); DataGridHelper.CalculateColumnWidth(HistoryOrders, "000", "Заказ"); DataGridHelper.CalculateColumnWidth(HistoryOrders, "000.00", "Цена производителя"); DataGridHelper.CalculateColumnWidth(HistoryOrders, "000.00", "Цена"); DataGridHelper.CalculateColumnWidth(HistoryOrders, "00.00.0000", "Дата"); ReportLines.CommandBindings.Add(new CommandBinding(DataGrid.DeleteCommand, Commands.DoInvokeViewModel, Commands.CanInvokeViewModel)); new Editable().Attach(ReportLines); }
public MatchedWaybills() { InitializeComponent(); DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена производителя без НДС"); DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена ГР"); DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Торговая наценка оптовика"); DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена поставщика без НДС"); DataGridHelper.CalculateColumnWidth(WaybillLines, "999", "НДС"); DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена поставщика с НДС"); DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Заказ"); }
private void Init() { if (model?.Waybill == null) { return; } //борьба за производительность //операции установки стиля приводят к перестроению дерева элементов wpf //что негативно отражается на производительности //что бы избежать ненужных перестроений дерева //сначала конструируем таблицу и настраиваем ее а затем добавляем в дерево элементов lines = new DataGrid2(); lines.Loaded += (sender, args) => { DataGridHelper.Focus(lines); }; lines.IsReadOnly = false; lines.Name = "Lines"; lines.Columns.Add(new DataGridTextColumnEx { Header = "Наименование", Binding = new Binding("Product"), Width = new DataGridLength(180, DataGridLengthUnitType.Star), SortDirection = ListSortDirection.Ascending, IsReadOnly = model.User.IsStockEnabled }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Производитель", Binding = new Binding("Producer"), Width = new DataGridLength(180, DataGridLengthUnitType.Star), IsReadOnly = model.User.IsStockEnabled }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Страна", Binding = new Binding("Country"), Width = new DataGridLength(100, DataGridLengthUnitType.Star), }); lines.Columns.Add(DataGridHelper.CheckBoxColumn("Печатать", "Print", x => lines.Items.OfType <WaybillLine>().Each(l => l.Print = x), true)); lines.Columns.Add(new DataGridTextColumnEx { Header = "Срок годности", Binding = new Binding("Period"), SortMemberPath = "Exp", Width = new DataGridLength(160, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Серия товара", Binding = new Binding("SerialNumber"), Width = new DataGridLength(160, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Width = new DataGridLength(13, DataGridLengthUnitType.Star), Header = "Штрихкод", Binding = new Binding("EAN13"), }); lines.Columns.Add(new CustomDataGridColumn((c, i) => null) { Header = "Сертификаты", Name = "CertificateLink", Width = new DataGridLength(1, DataGridLengthUnitType.SizeToHeader), Generator = (c, i) => new ContentControl { Style = (Style)FindResource("DownloadLink") } }); if (model.Waybill.IsCreatedByUser == true) { lines.CanUserAddRows = !model.User.IsStockEnabled; lines.CanUserDeleteRows = true; lines.Columns.Add(new CustomDataGridColumn { Header = "ЖНВЛС", Width = new DataGridLength(1, DataGridLengthUnitType.SizeToHeader), Generator = (c, i) => { var el = new CheckBox { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }; BindingOperations.SetBinding(el, CheckBox.IsCheckedProperty, new Binding("VitallyImportant") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); return(el); } }); } lines.Columns.Add(new DataGridTextColumnEx { Header = "Номер сертификата", Binding = new Binding("Certificates"), Width = new DataGridLength(180, DataGridLengthUnitType.Star), Visibility = Visibility.Collapsed }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Цена производителя без НДС", Binding = new Binding("ProducerCost"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Цена ГР", Binding = new Binding("RegistryCost"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Торговая наценка оптовика", Binding = new Binding("SupplierPriceMarkup"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Цена поставщика без НДС", Binding = new Binding("SupplierCostWithoutNds"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Header = "НДС", Binding = new Binding("Nds"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Цена поставщика с НДС", Binding = new Binding("SupplierCost") { Converter = InputConverter.Instance, ValidatesOnExceptions = true, }, Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = false }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Макс. розничная наценка", Binding = new Binding("MaxRetailMarkup"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = true, }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Розничная наценка", Binding = new Binding("RetailMarkup") { Converter = InputConverter.Instance, ValidatesOnExceptions = true, }, Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = false, }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Реальная наценка", Binding = new Binding("RealRetailMarkup") { Converter = InputConverter.Instance, ValidatesOnExceptions = true, }, Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = false, }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Розничная цена", Binding = new Binding("RetailCost") { Converter = InputConverter.Instance, ValidatesOnExceptions = true, }, Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = false, }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Заказ", Binding = new Binding("Quantity") { Converter = InputConverter.Instance, ValidatesOnExceptions = true, }, Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = false }); lines.Columns.Add(new DataGridTextColumnEx { Header = "Розничная сумма", Binding = new Binding("RetailSum"), Width = new DataGridLength(1, DataGridLengthUnitType.Star), IsReadOnly = true, }); var grid = lines; DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена производителя без НДС"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена ГР"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Торговая наценка оптовика"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена поставщика без НДС"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена поставщика с НДС"); DataGridHelper.CalculateColumnWidth(grid, "000", "НДС"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Макс. розничная наценка"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Розничная наценка"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Реальная наценка"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Розничная цена"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Заказ"); DataGridHelper.CalculateColumnWidth(grid, "00000", "Оприходовано"); DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Розничная сумма"); DataGridHelper.CalculateColumnWidth(grid, "0000000000000", "Штрихкод"); StyleHelper.ApplyStyles(typeof(WaybillLine), lines, Application.Current.Resources, Legend); Conventions.ConfigureDataGrid(lines, typeof(WaybillLine)); Grid.SetRow(lines, 2); Grid.SetColumn(lines, 1); Editable.AutoEditOnDigit(grid, "Розничная наценка"); if (model != null) { model.TableSettings.Restore(lines); model.TableSettings.Restore(OrderLines); foreach (var gridColumn in lines.Columns.OfType <DataGridTextColumn>().Where(c => !c.IsReadOnly)) { if (gridColumn.ReadLocalValue(DataGridColumn.IsReadOnlyProperty) == DependencyProperty.UnsetValue) { gridColumn.IsReadOnly = model.Waybill.IsReadOnly; } } model.Waybill.PropertyChanged += (sender, args) => { if (args.PropertyName == "IsCreatedByUser") { MainGrid.Children.Remove(lines); Init(); lines.ItemsSource = model.Lines.Value; } else if (args.PropertyName == "Status") { lines.CommitEdit(); //Завершаем редактирование, чтобы не исчезла текущая строка lines.IsReadOnly = model.Waybill.Status == DocStatus.Posted; } }; lines.IsReadOnly = model.Waybill.Status == DocStatus.Posted; } grid.BeginningEdit += (sender, args) => { var line = args.Row.DataContext as WaybillLine; if (line == null) { return; } if (line.ServerRetailCost != null) { MessageBox.Show(Application.Current.MainWindow, "Редактирование розничной цены запрещено поставщиком", Consts.WarningTitle, MessageBoxButton.OK, MessageBoxImage.Warning); args.Cancel = true; } else if (model.Waybill.Status == DocStatus.Posted) { MessageBox.Show(Application.Current.MainWindow, "Накладная оприходована, редактирование запрещено", Consts.WarningTitle, MessageBoxButton.OK, MessageBoxImage.Warning); args.Cancel = true; } }; MainGrid.Children.Add(lines); DataGridHelper.CalculateColumnWidth(OrderLines, "00000.00", "Цена"); DataGridHelper.CalculateColumnWidth(OrderLines, "00000.00", "Заказ"); DataGridHelper.CalculateColumnWidth(OrderLines, "00000.00", "Сумма"); }
public Main() { InitializeComponent(); DataGridHelper.CalculateColumnWidth(Newses, "0000.00.00", "Дата"); }