123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows;
- using InABox.Clients;
- using InABox.Core;
- using InABox.Wpf;
- namespace InABox.DynamicGrid
- {
- /// <summary>
- /// Interaction logic for MultiSelectWindow.xaml
- /// </summary>
- public partial class MultiSelectWindow : ThemableWindow
- {
- public MultiSelectWindow(Type type, Guid[] exclusions)
- {
- InitializeComponent();
- Setup(type, exclusions);
- }
- //added for when wanting to prepopulate - only been tested on Manufacturing Packet Trolley selection so far
- public MultiSelectWindow(Type type, Guid[] exclusions, List<string> prepopulateValues)
- {
- InitializeComponent();
- Setup(type, exclusions);
- try
- {
- if (prepopulateValues.Count > 0)
- {
- foreach (var item in Items.Items)
- {
- string stringvalue = (item as KeyValuePair<Entity, string>?).Value.ToString();
- var pairstring = stringvalue.Split(',');
- string pairvalue = pairstring[1];
- if (pairvalue.Contains('/'))
- {
- var substring = pairvalue.Split('/');
- string s = substring[0].Trim();
- if (prepopulateValues.Contains(s) && !Items.SelectedItems.Contains(item))
- {
- Items.SelectedItems.Add(item);
- }
- }
- }
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show("Unable to Prepopulate", ex.Message);
- }
- }
- private void Setup(Type type, Guid[] exclusions)
- {
- Values = new Entity[] { };
- var source = new Dictionary<Entity, string>();
- var client = ClientFactory.CreateClient(type);
- //var columns = Entity.DefaultLookupColumns(type) as IColumns;
- var columns = LookupFactory.DefineColumns(type);
- var filter = LookupFactory.DefineFilter(type);
- //var sort = BaseObject.DefaultSortOrder(type);
- var sort = LookupFactory.DefineSort(type);
- var items = client.Load(filter, sort);
- foreach (var item in items)
- if (!exclusions.Contains(item.ID))
- {
- var display = new List<object>();
- foreach (var column in columns.ColumnNames().Where(x => !x.Equals("ID")))
- display.Add(CoreUtils.GetPropertyValue(item, column));
- source[item] = string.Join(" / ", display.Where(x => x != null && !string.IsNullOrWhiteSpace(x.ToString())));
- }
- Items.ItemsSource = source;
- }
- public Entity[] Values { get; private set; }
- private void OKButton_Click(object sender, RoutedEventArgs e)
- {
- var result = new List<Entity>();
- foreach (KeyValuePair<Entity, string> item in Items.SelectedItems)
- result.Add(item.Key);
- Values = result.ToArray();
- DialogResult = true;
- Close();
- }
- private void CancelButton_Click(object sender, RoutedEventArgs e)
- {
- DialogResult = false;
- Close();
- }
- public static bool Execute(Type type, ref Entity[] items, Guid[] exclusions)
- {
- var window = new MultiSelectWindow(type, exclusions);
- if (window.ShowDialog() == true)
- {
- items = window.Values;
- return true;
- }
- return false;
- }
- private void SelectAll_Click(object sender, RoutedEventArgs e)
- {
- }
- private void SelectAll_Click_1(object sender, RoutedEventArgs e)
- {
- Items.SelectedItems.Clear();
- if (SelectAll.Content.ToString() == "Select All")
- {
- foreach (var item in Items.Items)
- Items.SelectedItems.Add(item);
- SelectAll.Content = "Clear All";
- }
- else
- {
- SelectAll.Content = "Select All";
- }
- }
- }
- }
|