С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
4 / 4 / 1
Регистрация: 28.10.2012
Сообщений: 30

Как произвести поиск записей в DataGrid

06.12.2012, 21:27. Показов 3221. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста товарищи с организацией алгоритма поиска в программе.
Часть функционала:
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
48
<Window x:Class="WpfApplication5.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="420" Width="680">
    <Grid>
        
 
        <Grid.RowDefinitions>
            <RowDefinition Height="24" />
            <RowDefinition Height="286*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <DataGrid x:Name="DataGrid1" AutoGenerateColumns="False" Grid.Row="1">
 
            <DataGrid.Columns>
                <DataGridTextColumn Header="Название фильма" Binding="{Binding Name}" Width="130"> 
                  <DataGridTextColumn.ElementStyle>
                    <Style TargetType="TextBlock">
                        <Setter Property="TextWrapping" Value="Wrap"></Setter>
                    </Style>
                    </DataGridTextColumn.ElementStyle>
                </DataGridTextColumn>
                    <DataGridTextColumn Header="Имя режиссера" Binding="{Binding NameDirector}" Width="100">
                        <DataGridTextColumn.ElementStyle>
                            <Style TargetType="TextBlock">
                                <Setter Property="TextWrapping" Value="Wrap"></Setter>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Header="Год" Binding="{Binding God}" Width="50"/>
                <DataGridTextColumn Header="Страна" Binding="{Binding Country}" Width="70" />
                    <DataGridTextColumn Header="Жанр" Binding="{Binding Genre}" Width="70">
                        <DataGridTextColumn.ElementStyle>
                            <Style TargetType="TextBlock">
                                <Setter Property="TextWrapping" Value="Wrap"></Setter>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Header="№ диска в каталоге" Binding="{Binding Number}" />
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Добавить поле" Height="23" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" Width="98" Click="Button1Add"/>
        <Button Content="Удалить поле" Height="23" HorizontalAlignment="Left" Name="button2" VerticalAlignment="Top" Width="96" Margin="104,0,0,0" Click="button2_Click" />
        <Button Content="Удалить всё" Height="23" HorizontalAlignment="Left" Name="button3" VerticalAlignment="Top" Width="98" Margin="206,0,0,0" Click="ButtonClear_Click"/>
        <Button Content="Сохранить" Height="23" HorizontalAlignment="Left" Margin="386,0,0,0" Name="button4" VerticalAlignment="Top" Width="70" Click="button4_Click" />
        <Button Content="Загрузить" Height="23" HorizontalAlignment="Left" Margin="505,0,0,0" Name="button5" VerticalAlignment="Top" Width="75" Click="button5_Click_1" />
    </Grid>
</Window>
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
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using System.Xml.Linq;
using System.IO;
using System.Runtime.Serialization;
using System.Xml.Serialization;
 
namespace WpfApplication5
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
 
        }
        public class Films
        {
            
            public string Name { get; set; }
            public string NameDirector { get; set; }
            public int God { get; set; }
            public string Country { get; set; }
            public string Genre { get; set; }
            public int Number { get; set; }
           
        }
        public ObservableCollection<Films> films = new ObservableCollection<Films>();   // создает коллекцию 
        int i = 1;  // обычный счетчик, нужен для нумерации номера диска
        private void Button1Add(object sender, RoutedEventArgs e)             // добавляет поле
        {
 
            films.Add(new Films()           
            {
                Name = "",
                NameDirector = "",
                Country = "",
                Genre = "",
                Number = i++,
            });
            DataGrid1.ItemsSource = films;
        }
 
 
        private void ButtonClear_Click(object sender, RoutedEventArgs e)         // удаляет все поля
        {
            films.Clear();
        }
 
        private void button2_Click(object sender, RoutedEventArgs e)            // удаляет выделенное поле
        {
            
            
        }
 
        private void button4_Click(object sender, RoutedEventArgs e)           // создает файл, сохраняет данные с датагрид
        {
            
        }
 
 
        private void button5_Click_1(object sender, RoutedEventArgs e)    
        {
            
 
        }
 
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2012, 21:27
Ответы с готовыми решениями:

Как оптимальнее хранить и показывать в datagrid свыше 10 000 записей
Хотелось бы совет насчет того,стоит ли отображать в таблице(datagrid) 10тыс. записей(храню в другом месте) или это будет слишком?? ...

Как осуществить поиск в DataGrid?
Здравствуйте! Мне очень понадобилось реализовать поиск в базе данных. База данных у меня грузится в datagrid: public...

ObservableCollection привязана к DataGrid, как реализовать поиск и удаление в коллекции?
ObservableCollection&lt;class&gt; привязана к DataGrid, как реализовать поиск, сравнение и удаление в коллекции? Если возможно - без...

5
79 / 79 / 12
Регистрация: 07.01.2012
Сообщений: 167
07.12.2012, 21:02
C#
1
2
3
4
5
private ObservableCollection<Films> Find(string searchString)
        {
            return (ObservableCollection<Films>)films.
                Where(x => x.NameDirector == searchString);
        }
1
4 / 4 / 1
Регистрация: 28.10.2012
Сообщений: 30
08.12.2012, 21:43  [ТС]
Спасибо большое!
А нет ли у Вас случайно какого-нибудь примера с данным алгоритмом!?! Хотелось бы понять, как это все работает!
1
2 / 2 / 0
Регистрация: 01.11.2012
Сообщений: 15
08.12.2012, 22:26
X-Roft, у Вас есть коллекция films, у которой тип ObservableCollection<Films>. DataGrid берёт данные на отображение именно из этой коллекции. Если Вам нужно что то найти в DataGrid, то алгоритм поиска должен искать именно в этой коллекции films. Поиск в коллекции удобно делать через LinQ. Метод Where, в примере котором Вам написали, позволяет отфильтровать коллекцию по какому либо условию и вернуть набор элементов, который удовлетворяет условию.
2
4 / 4 / 1
Регистрация: 28.10.2012
Сообщений: 30
09.12.2012, 12:36  [ТС]
Вот теперь все понятно стало. Огромная благодарность Вам!
0
4 / 4 / 1
Регистрация: 28.10.2012
Сообщений: 30
11.12.2012, 22:55  [ТС]
Цитата Сообщение от Talent Посмотреть сообщение
C#
1
2
3
4
5
private ObservableCollection<Films> Find(string searchString)
        {
            return (ObservableCollection<Films>)films.
                Where(x => x.NameDirector == searchString);
        }
Блин, что-то ошибку выдает при работе с этим методом:

Дополнительные сведения: Не удалось привести тип объекта "WhereEnumerableIterator`1[WpfApplication5.MainWindow+Films]" к типу "System.Collections.ObjectModel.Observab leCollection`1[WpfApplication5.MainWindow+Films]".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2012, 22:55
Помогаю со студенческими работами здесь

Удаление нескольких записей из datagrid
Есть класс Student Есть List List&lt;Student&gt; result = new List&lt;Student&gt;(); В этот лист заносятся данные и отображаются после в...

DataGrid, куча записей + Группировка -> тормоза
В общем вопрос: вывести пытаюсь в DataGrid порядка 50 000 записей из нескольких категорий(до этого экспериментировал с 20-50). Группировку...

Обновление данных при удалении записей в DataGrid
Приветствую! Ребята, подскажите где накосячил. Есть MVVM. На форме есть таблица DataGridView и несколько кнопок (удаление, добавление,...

При изменении записей datagrid записать данные в БД
Привет всем форумчанам. В общем пока летние каникулы я решил немного заняться собой в плане образования. Что мы имеем: есть WPF...

Как зеркально отобразить dataGrid одного окна в dataGrid в другом окне?
Здравствуйте. Столкнулся с проблемой. Не знаю, как отобразить зеркально dataGrid одного окна, в dataGrid другого окна? Возможно ли...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru