| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using comal.timesheets.Data_Classes;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace comal.timesheets
- {
- public delegate void MultiSelctPageSaved(IEnumerable<MultiSelectPageViewItem> items, int colnumber, string columnname);
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class MultiSelectPage : ContentPage
- {
- public event MultiSelctPageSaved OnPageSaved;
- List<string> Options = new List<string>();
- int Columnnumber;
- string ColumnName;
- ObservableCollection<MultiSelectPageViewItem> Items = new ObservableCollection<MultiSelectPageViewItem>();
- public MultiSelectPage(List<string> options, string title = "Select Options")
- {
- Setup(options, title);
- listView.ItemsSource = Items;
- }
- public MultiSelectPage(List<string> options, List<DataGridFilter> filters, int columnnumber, string columnname)
- {
- Setup(options, columnname);
- foreach (var filter in filters)
- {
- var item = Items.FirstOrDefault(x => x.Value == filter.Value);
- item.Selected = true;
- }
- ColumnName = columnname;
- Columnnumber = columnnumber;
- listView.ItemsSource = Items;
- }
- private void Setup(List<string> options, string title)
- {
- InitializeComponent();
- titleLbl.Text = title;
- NavigationPage.SetHasBackButton(this, false);
- Options = options;
- foreach (var option in Options)
- Items.Add(new MultiSelectPageViewItem { Value = option });
- }
- private void SearchEnt_Changed(object sender, EventArgs e)
- {
- string s = searchEnt.Text;
- listView.ItemsSource = Items.Where(
- x => x.Value.Contains(s) || x.Value.Contains(s.ToUpper()) || x.Value.Contains(s.ToLower())
- || x.Value.Contains(SearchUtils.UpperCaseFirst(s)) || x.Value.Contains(SearchUtils.LowerCaseFirst(s)) || x.Value.Contains(SearchUtils.UpperCaseSecond(s))
- );
- }
- private void CancelBtn_Clicked(object sender, EventArgs e)
- {
- Navigation.PopAsync();
- }
- private void SaveBtn_Clicked(object sender, EventArgs e)
- {
- OnPageSaved(Items.Where(x => x.Selected == true), Columnnumber, ColumnName) ;
- Navigation.PopAsync();
- }
- private void Item_Tapped(object sender, EventArgs e)
- {
- var selecteditem = listView.SelectedItem as MultiSelectPageViewItem;
- var item = Items.FirstOrDefault(x => x.Value == selecteditem.Value);
- item.Selected = item.Selected == true ? false : true;
- }
- private void SelectAll_Clicked(object sender, EventArgs e)
- {
- foreach (var item in Items)
- item.Selected = true;
- }
- private void ClearAll_Clicked(object sender, EventArgs e)
- {
- foreach (var item in Items)
- item.Selected = false;
- }
- }
- public class MultiSelectPageViewItem : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
- private bool selected;
- public string Value { get; set; }
- public bool Selected
- {
- get => selected;
- set
- {
- selected = value;
- OnPropertyChanged("Selected");
- }
- }
- public MultiSelectPageViewItem()
- {
- Value = "";
- Selected = false;
- }
- protected virtual void OnPropertyChanged(string propertyName)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- }
|