Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 19.05.2021
Сообщений: 26
1
WPF

Фильтрация в ListView

30.01.2022, 11:37. Показов 1467. Ответов 1

Author24 — интернет-сервис помощи студентам
Всем привет. У меня есть таблица "автомобили" и таблица "марки". Они связаны по полю "Код марки(Марки)"
Работаю над фильтрацией данных в ComboBox по ListView. ListView отображает данные автомобилей. Т.е. если я выберу какую-нибудь марку из таблицы "Марки" в ComboBox, то мне выйдет автомобиль с этой маркой.

Пытался это реализовать, но выводит ошибку (CS1929 "Марки" не содержит определение для "Contains", и наиболее подходящий перегруженный метод расширения "Queryable.Contains<Марки>(IQueryable<Марки>, Марки)" требует наличия получателя типа "IQueryable<Марки>".)
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
36
37
38
39
40
41
42
43
44
45
46
47
<!--Панель для сортировки и фильтрации-->
        <WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Width="415">
            <ComboBox x:Name="sortBrands" Width="135" Margin="20,0,0,0" Padding="10 6 0 0" DisplayMemberPath="Наименование" SelectionChanged="SortBrands_SelectionChanged"></ComboBox>
        </WrapPanel>
 
        <!--Отображение всех автомобилей с помощью ListView-->
        <ListView x:Name="LViewCarRental" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Center">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Horizontal" HorizontalAlignment="Center"></WrapPanel>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="20" Width="350">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="40"></RowDefinition>
                            <RowDefinition Height="25"></RowDefinition>
                            <RowDefinition Height="310"></RowDefinition>
                            <RowDefinition Height="auto"></RowDefinition>
                            <RowDefinition Height="auto"></RowDefinition>
                            <RowDefinition Height="auto"></RowDefinition>
                        </Grid.RowDefinitions>
                        <Image Width="400" Grid.Row="2" Stretch="UniformToFill" HorizontalAlignment="Center" Margin="5">
                            <Image.Source>
                                <Binding Path="Фото">
                                    <Binding.TargetNullValue>
                                        <ImageSource>Resources/picture.png</ImageSource>
                                    </Binding.TargetNullValue>
                                </Binding>
                            </Image.Source>
                        </Image>
                        <TextBlock Text="{Binding Наименование}" VerticalAlignment="Center" TextAlignment="Center" Width="390"
                                   TextWrapping="Wrap" HorizontalAlignment="Center" Margin="5 5" FontSize="24" Grid.Row="0"></TextBlock>
                        <TextBlock Text="{Binding НомерАвтомобиля, StringFormat={} Номер автомобиля: {0}}" VerticalAlignment="Center" TextAlignment="Center" Width="390"
                                   TextWrapping="Wrap" HorizontalAlignment="Center" Margin="5 5" FontSize="14" Grid.Row="1"></TextBlock>
                        <TextBlock Text="{Binding СтоимостьПроката, StringFormat={}{0:N2} РУБ}" Grid.Row="3" Margin="5 5 5 15" HorizontalAlignment="Center" FontSize="26" FontWeight="Bold"></TextBlock>
                        <TextBlock Text="{Binding Марки.Наименование, StringFormat={} Марка: {0}}" Grid.Row="4" FontSize="14" HorizontalAlignment="Right"></TextBlock>
                        <TextBlock Text="{Binding Цвет, StringFormat={} Цвет: {0}}" Grid.Row="4" FontSize="14" HorizontalAlignment="Left"></TextBlock>
                        <!--Добавление кнопки для изменения информации об автомобиле-->
                        <Button x:Name="BtnEdit" Content="Редактировать" Height="35" Width="150" Grid.Row="5" Margin="5 15 5 15" Click="BtnEdit_Click" HorizontalAlignment="Left"></Button>
                        <!--Кнопка для изменения информации об автомобиле-->
                        <Button x:Name="BtnSelectPhoto" Content="Выбратть фото" Height="35" Width="150" Grid.Row="5" Margin="5 15 5 15" Click="BtnSelectPhoto_Click" HorizontalAlignment="Right"></Button>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
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
public CarRentalPage()
        {
            InitializeComponent();
 
            var allBrands = CarRentalEntity.GetContext().Марки.ToList();
            allBrands.Insert(0, new Марки
            {
                Наименование = "Все типы"
            });
 
            sortBrands.ItemsSource = allBrands;
            sortBrands.SelectedIndex = 0;
 
            UpdateCar();
        }
 
        private void UpdateCar()
        {
            var currentCar = CarRentalEntity.GetContext().Автомобили.ToList();
 
            if (sortBrands.SelectedIndex > 0)
                currentCar = currentCar.Where(p => p.Марки.Contains(sortBrands.SelectedItem as Марки)).ToList();
 
            LViewCarRental.ItemsSource = currentCar.OrderBy(p => p.СтоимостьПроката).ToList();
        }
Выводит ошибку в этой строке
C#
1
currentCar = currentCar.Where(p => p.Марки.Contains(sortBrands.SelectedItem as Марки)).ToList();
Если прописываю к маркам конкретно наименование
C#
1
currentCar = currentCar.Where(p => p.Марки.Наименование.Contains(sortBrands.SelectedItem as Марки)).ToList();
То выводит ошибку (Аргумент 1: не удается преобразовать из "AutomatedCarRentalSystem.Марки" в "string")

Прошу, помогите с решением!
Миниатюры
Фильтрация в ListView   Фильтрация в ListView  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2022, 11:37
Ответы с готовыми решениями:

Фильтрация ListView или DataGrid по нескольким критериям?
Допустим есть контрол таблицы неважно какой, нужно как по фото реализовать фильтр или группировку....

Фильтрация содержимого ListView
Привет,помогите пожалуйста,у меня есть два переключателя (radioButton), один отвечает за все...

Фильтрация записей из SQL в ListView
Привет. Как лучше сделать фильтрацию записей в listview из SQL базы? Логично или нет сначала...

Фильтрация в ListView
Здравствуйте! покажите пожалуйста, как сделать фильтрацию в ListView? допустим вводим в Edit1.Text...

1
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
30.01.2022, 21:08 2
SpelSy, ваших объяснений и кода не достаточно для ответа.
Как минимум нужно выложить объявление типа "Марки" и "Автомобиль".

Так же большой совет, вы же только учитесь, так учитесь сразу по нормальному.
Соблюдать хотя бы элементарно Правила Именования вы же способны.
Имена должны быть значащими словосочетаниями на АНГЛИЙСКОМ языке.
Это для вас ПРИНЦИПИАЛЬНО, поскольку если вы при трудоустройстве покажете код с именами как выше, то вас просто каким-то дегротом посчитают.
Работает он или нет - даже рассматривать не будут.

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

Сами представьте, если у вас длинный список и выбрана последняя модель, то чтобы выбрать "Все" придётся весь список проматывать к началу.

Это не принципиально, но рассмотрите как вариант дизайна - кокай лучше подходит для вашей задачи.
0
30.01.2022, 21:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2022, 21:08
Помогаю со студенческими работами здесь

Фильтрация ListView из EditText
Не могу разобраться с фильтрацией в ListView. Фильтрация происходит правильно (находит нужное...

Фильтрация ListView или DataGrid по нескольким критериям?
Допустим есть контрол таблицы неважно какой, нужно как по фото реализовать фильтр или группировку....

ListView. Передать текст из поля ListView с одной страницы в поле ListView другой страницы
Возможно ли передать текст (в данном случае персональный код) из поля ListView с одной страницы в...

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам...

Как правильно скролить ListView который находится внутри другого ListView?
Доброго! Впихнул один ListView во внутрль другого, получил интересный эффект... если жмакнуть по...

Как я могу загрузить содержимое одного listview в другой listview
Как я могу загрузить содержимое одного listview в другой listview? ListModel { id: model1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru