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



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

Код: c#
1.
 MyListBox.SelectedValue

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



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

Код: c#
1.
 MyListBox.SelectedValue

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


Получает выбранные в данное время элементы. Но не задает их!
...
Рейтинг: 0 / 0
ListBox задать несколько выделенных элементов(выгузка из бд)
    #38978482
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
ListBox задать несколько выделенных элементов(выгузка из бд)
    #38978523
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так по уму если делать в упрощенном варианте
Код: 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
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ListBox задать несколько выделенных элементов(выгузка из бд)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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