PurchaseOrderDetails.xaml.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Mobile;
  4. using Xamarin.Forms;
  5. using Xamarin.Forms.Xaml;
  6. namespace PRS.Mobile
  7. {
  8. [XamlCompilation(XamlCompilationOptions.Compile)]
  9. public partial class PurchaseOrderDetails
  10. {
  11. private readonly PurchaseOrderItemModel _poitems;
  12. public PurchaseOrderDetails(PurchaseOrderShell shell)
  13. {
  14. _poitems = new PurchaseOrderItemModel(App.Data,
  15. () => new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.ID).IsEqualTo(shell.ID)
  16. );
  17. InitializeComponent();
  18. Title = $"PO #{shell.PONumber}";
  19. _items.Columns
  20. .BeginUpdate()
  21. .Clear()
  22. .Add(new MobileGridTextColumn<PurchaseOrderItemShell>()
  23. { Column = x => x.JobNumber, Width = GridLength.Auto, Caption = "Job" })
  24. .Add(new MobileGridTextColumn<PurchaseOrderItemShell>()
  25. { Column = x => x.Description, Width = GridLength.Star, Alignment = TextAlignment.Start})
  26. .Add(new MobileGridDoubleColumn<PurchaseOrderItemShell>()
  27. { Column = x => x.Qty, Width = GridLength.Auto })
  28. .Add(new MobileGridDateColumn<PurchaseOrderItemShell>() { Column = x => x.ReceivedDate, Format = "dd MMM yy", Caption="Rec'd" })
  29. .EndUpdate();
  30. RefreshData(false, true);
  31. }
  32. private void RefreshData(bool force, bool async)
  33. {
  34. if (async)
  35. _poitems.Refresh(force, () => Dispatcher.BeginInvokeOnMainThread(Refresh));
  36. else
  37. {
  38. _poitems.Refresh(force);
  39. Refresh();
  40. }
  41. }
  42. private void Refresh()
  43. {
  44. _items.ItemsSource ??= _poitems.Items;
  45. }
  46. private void _items_OnRefreshRequested(object sender, MobileGridRefreshRequestArgs args)
  47. {
  48. RefreshData(true, false);
  49. }
  50. }
  51. }