1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Media.Imaging;
- using Comal.Classes;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- namespace PRSDesktop
- {
- public class StockTreatmentGrid : DynamicDataGrid<StockHolding>
- {
- private readonly List<Guid> _selected = new();
- private readonly BitmapImage tick = PRSDesktop.Resources.tick.AsBitmapImage();
- public StockTreatmentGrid()
- {
- Options.Clear();
- ActionColumns.Add(new DynamicImageColumn(SelectedImage, SelectedAction) { Position = DynamicActionColumnPosition.End });
- }
- public Guid Location { get; set; }
- public IEnumerable<Guid> Selected => _selected;
- protected override DynamicGridColumns LoadColumns()
- {
- //return base.LoadColumns();
- var result = new DynamicGridColumns();
- result.Add<StockHolding, double>(x => x.Units, 50, "Qty", "F0", Alignment.MiddleCenter);
- result.Add<StockHolding, string>(x => x.Product.Code, 120, "Code", "", Alignment.MiddleLeft);
- result.Add<StockHolding, string>(x => x.Product.Name, 0, "Name", "", Alignment.MiddleLeft);
- result.Add<StockHolding, string>(x => x.Dimensions.UnitSize, 100, "Size", "", Alignment.MiddleCenter);
- result.Add<StockHolding, string>(x => x.Job.JobNumber, 70, "Job #", "", Alignment.MiddleCenter);
- return result;
- }
- private BitmapImage SelectedImage(CoreRow arg)
- {
- return arg == null
- ? tick
- : _selected.Contains(arg.Get<StockHolding, Guid>(x => x.ID))
- ? tick
- : null;
- }
- private bool SelectedAction(CoreRow arg)
- {
- if (arg == null)
- {
- if (_selected.Any())
- _selected.Clear();
- else
- _selected.AddRange(Data.ExtractValues<StockHolding, Guid>(x => x.ID));
- }
- else
- {
- var id = arg.Get<StockHolding, Guid>(x => x.ID);
- if (_selected.Contains(id))
- _selected.Remove(id);
- else
- _selected.Add(id);
- }
- return true;
- }
- protected override void Reload(Filters<StockHolding> criteria, Columns<StockHolding> columns, ref SortOrder<StockHolding> sort,
- Action<CoreTable, Exception> action)
- {
- criteria.Add(new Filter<StockHolding>(x => x.Location.ID).IsEqualTo(Location));
- base.Reload(criteria, columns, ref sort, action);
- }
- }
- }
|