Beispiel #1
0
        private void SelectExecute(object obj)
        {
            var resultTypePropInfo = obj?.GetType().GetProperties().FirstOrDefault(x => ResultType.IsAssignableFrom(x.PropertyType));

            if (resultTypePropInfo != null)
            {
                if (!string.IsNullOrEmpty(IdColumn) && idColumnPropInfo == null)
                {
                    idColumnPropInfo = resultTypePropInfo.PropertyType?.GetProperty(IdColumn);
                }

                var resultTypeValue = resultTypePropInfo.GetValue(obj);
                ChangeSource = ChangeSourceEnum.FromComponent;
                SelectedItem = resultTypeValue;
                SelectedId   = idColumnPropInfo.GetValue(resultTypeValue) as int?;
                ChangeSource = ChangeSourceEnum.None;
            }

            treeLookupWindow?.Close();
        }
Beispiel #2
0
        private void OpenWindowExcecute()
        {
            if (PreviewSelect != null)
            {
                var arg = new PreviewSelectEventArgs();
                PreviewSelect(this, arg);

                if (arg.Cancel == true)
                {
                    ClearLookup();
                    return;
                }
            }

            LoadData();

            if (valueColumnPropInfo == null || idColumnPropInfo == null)
            {
                ClearLookup();
                return;
            }

            PrepareLookupWindow();

            if (SelectionMode == LookupSelectionMode.Single)
            {
                treeLookupWindow.ShowDialog();
            }
            else
            {
                if (ItemsSource == null)
                {
                    ClearLookup();
                    return;
                }

                if (SelectedItems != null)
                {
                    foreach (var item in SelectedItems)
                    {
                        if (item is ISelectable)
                        {
                            (item as ISelectable).IsSelected = true;
                        }
                    }
                }

                if (treeLookupWindow.ShowDialog() == true)
                {
                    if (typeof(ISelectable).IsAssignableFrom(ResultType))
                    {
                        var itemList = new List <object>();
                        var idList   = new List <int>();

                        var list = FlatItemsSource.Cast <ISelectable>().Where(x => x.IsSelected);
                        foreach (var item in list)
                        {
                            itemList.Add(item);
                            var id = idColumnPropInfo?.GetValue(item) as int?;
                            if (id != null)
                            {
                                idList.Add(id.Value);
                            }
                        }

                        if (itemList.Count > 0)
                        {
                            ChangeSource  = ChangeSourceEnum.FromComponent;
                            SelectedItems = itemList;
                            SelectedIds   = idList;
                            ChangeSource  = ChangeSourceEnum.None;
                        }
                        else
                        {
                            ClearLookup();
                        }
                    }
                }
            }
        }
Beispiel #3
0
        public override void CustomTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.F2 && OpenWindowCommand.CanExecute(null))
            {
                OpenWindowCommand.Execute(null);
            }
            else if (e.Key == Key.Enter)
            {
                if (string.IsNullOrEmpty(ValueColumn) || string.IsNullOrEmpty(IdColumn) || string.IsNullOrEmpty((sender as CustomTextBox).Text) || (SearchCommand == null && ItemsSource == null))
                {
                    ClearLookup();
                    return;
                }

                if (PreviewSelect != null)
                {
                    var arg = new PreviewSelectEventArgs();
                    PreviewSelect(this, arg);

                    if (arg.Cancel == true)
                    {
                        ClearLookup();
                        return;
                    }
                }

                LoadData();

                if (valueColumnPropInfo == null || idColumnPropInfo == null)
                {
                    ClearLookup();
                    return;
                }

                if (SelectionMode == LookupSelectionMode.Single)
                {
                    IEnumerable result = null;
                    if (SearchCommand == null)
                    {
                        try
                        {
                            result = FlatItemsSource.Where($@"{CodeColumn}=={(sender as CustomTextBox).Text}", null);
                        }
                        catch
                        {
                            ClearLookup();
                            return;
                        }
                    }
                    else
                    {
                        try
                        {
                            SearchCommand?.Execute(new List <KeyValuePair <string, string> > {
                                new KeyValuePair <string, string>(CodeColumn, $@"{CodeColumn}=={(sender as CustomTextBox).Text}")
                            });
                            result = FlatItemsSource.Where($@"{CodeColumn}=={(sender as CustomTextBox).Text}", null);
                        }
                        catch
                        {
                            ClearLookup();
                            return;
                        }
                    }

                    if (result != null && result.Count() > 0)
                    {
                        ChangeSource = ChangeSourceEnum.FromComponent;
                        foreach (var item in result)
                        {
                            SelectedItem = item;
                            SelectedId   = idColumnPropInfo?.GetValue(item) as int?;
                            break;
                        }
                        ChangeSource = ChangeSourceEnum.None;
                    }
                    else
                    {
                        ClearLookup();
                    }
                }
                else
                {
                    var strCode = (sender as CustomTextBox).Text.Split(',');
                    for (int i = 0; i < strCode.Length; i++)
                    {
                        strCode[i] = strCode[i].Trim();
                    }
                    strCode = strCode.Distinct().ToArray();

                    var itemList = new List <object>();
                    var idList   = new List <int>();
                    if (FlatItemsSource != null)
                    {
                        foreach (var item in FlatItemsSource)
                        {
                            var code = codeColumnPropInfo?.GetValue(item)?.ToString();
                            if (!string.IsNullOrEmpty(code))
                            {
                                if (strCode.Any(x => x == code))
                                {
                                    itemList.Add(item);
                                    var id = idColumnPropInfo?.GetValue(item) as int?;
                                }
                            }
                        }
                    }

                    if (itemList.Any())
                    {
                        ChangeSource  = ChangeSourceEnum.FromComponent;
                        SelectedItems = itemList;
                        SelectedIds   = idList;
                        ChangeSource  = ChangeSourceEnum.None;
                    }
                    else
                    {
                        ClearLookup();
                    }
                }
            }
        }