Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ListBox задать несколько выделенных элементов(выгузка из бд) / 5 сообщений из 5, страница 1 из 1
05.06.2015, 14:59
    #38977490
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox задать несколько выделенных элементов(выгузка из бд)
Привет всем!
у меня
Код: c#
1.
 <ListBox  SelectionMode="Multiple"  Name="MyListBox" >



выделяю несколько записей и благополучно закидываю их в БД.
следующим этапом я хочу выгрузить записи из БД и выделить их в тоже порядке.

Код: c#
1.
 MyListBox.SelectedValue

- выделяет только одну запись, подскажите, как я могу выбрать несколько записей и выделить их?
...
Рейтинг: 0 / 0
05.06.2015, 19:22
    #38977777
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox задать несколько выделенных элементов(выгузка из бд)
yardieПривет всем!
у меня
Код: c#
1.
 <ListBox  SelectionMode="Multiple"  Name="MyListBox" >



выделяю несколько записей и благополучно закидываю их в БД.
следующим этапом я хочу выгрузить записи из БД и выделить их в тоже порядке.

Код: c#
1.
 MyListBox.SelectedValue

- выделяет только одну запись, подскажите, как я могу выбрать несколько записей и выделить их?
Свойство SelectedItems
...
Рейтинг: 0 / 0
06.06.2015, 11:59
    #38978075
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox задать несколько выделенных элементов(выгузка из бд)
Roman MejtesСвойство SelectedItems


Получает выбранные в данное время элементы. Но не задает их!
...
Рейтинг: 0 / 0
07.06.2015, 17:56
    #38978482
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox задать несколько выделенных элементов(выгузка из бд)
Код: c#
1.
2.
3.
  listbox .ItemsSource = dw.lstSmezhDolzh(IdDolzh);
  listbox .DisplayMemberPath = "Name";
  listbox .SelectedValuePath = "Id";



потом получаю из бд список выбранных в прошлый раз записей

Код: c#
1.
2.
3.
4.
5.
6.
 var lstSmezhDolzhUser = dw.lstSmezhDolzhForUserAnketa(IdEmploee);

            foreach (var data in lstSmezhDolzhUser)
            {
               listbox .SelectedItems.Add(data.IdSmezhDolzh);
            }



и ни чего не происходит... где-то туплю, подскажите где именно?
...
Рейтинг: 0 / 0
07.06.2015, 21:09
    #38978523
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox задать несколько выделенных элементов(выгузка из бд)
Вот так по уму если делать в упрощенном варианте
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
    public class Person 
    {
        public string Name { set; get; }
        public int Age { set; get; }
        public bool IsSelected { set; get; }
        
    }

    public class MainModel : INotifyPropertyChanged
    {
        private ObservableCollection<Person> _persones;

        public ObservableCollection<Person> Persones
        {
            private set
            {
                if (Equals(value, _persones)) return;
                _persones = value;
                OnPropertyChanged();
            }
            get { return _persones; }
        }

        public ICommand LoadNewList { private set; get; }
        public MainModel()
        {
            Persones = new ObservableCollection<Person>();
            LoadNewList = new ActionCommand(OnLoadNewList);
            LoadList1();
        }

        private void OnLoadNewList(object obj)
        {
            LoadList2();
        }

        private void LoadList1()
        {
            Persones = new ObservableCollection<Person>
            {
                new Person {Name = "Roman", Age = 31 },
                new Person {Name = "Ivan", Age = 28 },
                new Person {Name = "Petr", Age = 34 },
                new Person {Name = "Nikolay", Age = 13 },
            };
        }

        private void LoadList2()
        {
            var oldList = Persones;
            var newlist = new ObservableCollection<Person>
            {
                new Person {Name = "Roman", Age = 31},
                new Person {Name = "Ivan", Age = 28},
                new Person {Name = "Petr", Age = 34},
                new Person {Name = "Nikolay", Age = 25},
                new Person {Name = "Vasiliy", Age = 65},
                new Person {Name = "Nikolay", Age = 54},
                new Person {Name = "Sofia", Age = 33},
                new Person {Name = "Olga", Age = 42},
            };
            var needSelect = newlist.Where(p => oldList.Any(z => z.Name == p.Name && z.IsSelected));
            foreach (var i in needSelect) i.IsSelected = true;
            Persones = newlist;

        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
    public abstract class BaseCommand : ICommand
    {
        public abstract bool CanExecute(object parameter);

        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }

        public abstract void Execute(object parameter);
    }
    public class ActionCommand : BaseCommand
    {
        public ActionCommand(Action<object> action, Func<object, bool> condition)
        {
            Action = action;
            Condition = condition;
        }

        public ActionCommand(Action<object> action)
        {
            Action = action;
        }

        public Action<object> Action { set; get; }
        public Func<object, bool> Condition { set; get; }


        public override bool CanExecute(object parameter)
        {
            return Condition == null || Condition(parameter);
        }

        public override void Execute(object parameter)
        {
            if (Action != null) Action(parameter);
        }
    }


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpfApplication8="clr-namespace:WpfApplication8"
        Title="MainWindow" Height="350" Width="525"
        DataContext="{StaticResource MainModel}">
    <DockPanel>
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
            <Button Content="Load List 2" Command="{Binding LoadNewList}"
                    Padding="4" Margin="4"/>     
        </StackPanel>
        
        <ListBox ItemsSource="{Binding Persones}"
                 SelectionMode="Multiple"
                 Margin="4">
            <ListBox.ItemTemplate>
                <DataTemplate DataType="{x:Type wpfApplication8:Person}">
                    <TextBlock>
                        <TextBlock.Inlines>
                            <Run Text="{Binding Name}"/>
                            <Run Text=" - "/>
                            <Run Text="{Binding Age}"/>
                            <Run Text=" (IsSelected:"/><Run Text="{Binding IsSelected}" Foreground="Blue"/><Run Text=")"/>
                        </TextBlock.Inlines>
                    </TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>
    </DockPanel>
</Window>


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Application x:Class="WpfApplication8.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:wpfApplication8="clr-namespace:WpfApplication8"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         <wpfApplication8:MainModel x:Key="MainModel"/>
    </Application.Resources>
</Application>
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ListBox задать несколько выделенных элементов(выгузка из бд) / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]