2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
1
.NET 4.x

DataGrid и работа с конкретными строками. Обращение по id к строке

09.02.2017, 12:05. Показов 1979. Ответов 7

Author24 — интернет-сервис помощи студентам
Ситуация: есть DataGrid, к нему присобачен:
C#
1
ObservableCollection<KLACC_CnuCOK> CnuCOK;
Через ItemsSource. Что получилось: меняю CnuCOK - меняется содержимое DataGrid. Однако: меняться оно может часто, и единственный способ - перебирать CnuCOK но элементно. Но ситуация такая, что меняются конкретные элементы списка. У каждого - свой id. Класс, если имеет значение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    class KLACC_CnuCOK
    {
        public KLACC_CnuCOK(string A, string KAPTuHKA, string HAZBAHuE, string KOD, bool B = false)
        {
            this.A = A;//Это есть id элемента. По нему ищется щас, методом перебора "Конкретный элемент".
            this.KAPTuHKA = KAPTuHKA;
            this.HAZBAHuE = HAZBAHuE;
            this.KOD = KOD;
            this.B = B;
 
        }
        public string A { get; set; }
        public string KAPTuHKA { get; set; }
        public string HAZBAHuE { get; set; }
        public string KOD { get; set; }
        public bool B { get; set; }
    }
Какой есть способ подключения "чего-то к DataGrid", чтобы можно было обращаться к "конкретному элементу(по id) в 'чего-то' что подключено к DataGrid"? Если конечно я не сильно намудрил. Идея: не перебирать CnuCOK, и не перестраивать его заного, а менять конкретные элементы(Вариант "Редактирования только выделенных" - используется где возможно. Но по каким-то причинам возникает ситуация "Выделения нескольких элементов", несмотря на SelectionMode="Single"). Такое вообще существует? Или я прошу чего-то заоблачного?

Если важно: .NET 4.0 - потолок.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2017, 12:05
Ответы с готовыми решениями:

Работа с файлами. Обращение к определенной строке
Есть file.txt с четырьмя случайными числами через запятую в каждой строке. Пример. 892745,...

Работа со строками. Смена слов с строке.
Помогите написать функцию, которая будет менять местами первые два слова в каждой строке массива....

Обращение к строке двумерного массива и работа с ней
Собственно задача: Дан двумерный массив целых чисел. а) Составить программу, определяющую, верно...

Работа со строками: удаление пробелов и подсчет слов в строке
Дана строка слов. Сформируйте новую строку, удалив пробелы, с которых может начинаться строка, а...

7
burning1ife
1462 / 1284 / 293
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
10.02.2017, 20:42 2
Делается по умолчанию через Binding.
Ваш KLACC_CnuCOK должен реализовывать INotifyPropertyChanging

Добавлено через 1 минуту
ObservableCollection уведомляет при изменении в коллекции (добавили, удалили элемент)
INotifyPropertyChanging - за изменения в свойстве класса (изменилось свойство HAZBAHuE, KOD надо отобразить это в интерфейсе)
1
2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
10.02.2017, 22:07  [ТС] 3
Можно код-пример? А то я очень плохо соображаю: что имеется ввиду. Первая строка в поисковике:
https://metanit.com/sharp/wpf/11.2.php
Там вижу что-то вроде(непонятное для меня):
C#
1
2
3
4
5
6
7
8
9
    public string Title
    {
        get { return title; }
        set
        {
            title = value;
            OnPropertyChanged("Title");
        }
    }
Можно расшифровать get и set ? Что в нутрь ложат? Что положено в приведённом примере? Или пример, что я нашёл - не то, что нужно?
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
11.02.2017, 16:22 4
Цитата Сообщение от 47911 Посмотреть сообщение
Можно расшифровать get и set ?
Ну, брат, это же базовые вещи для C#. Как же ты приложение собрался писать? get и set это методы внутри свойства, вызываемые, когда значение свойства нужно получить (get) и задать — (set). В приведённом коде при изменении свойства будет вызываться событие PropertyChanged, сообщающее что данное свойство изменилось.
1
2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
11.02.2017, 19:01  [ТС] 5
Теоретически: знаком поверхностно.
Практически: только использовал конструкцию:
C#
1
public string AZAZZA{ get; set; }
Щас покопаюсь. . .

Брат по разуму(ну я стараюсь соответствовать некоторым стандартам)! Услышь меня! Молю тебя - ответь мне.

Как я понял: в get - получаем значение из прикреплённого списка, а в set - выводим(value - то, что получили из списка) на форму(в элемент интерфейса)? Т.е. код, вида:
C#
1
2
3
4
5
6
7
8
9
10
    public string Title
    {
        get { return title; }
        set
        {
            title = value;
title = title + "Azazza";
            OnPropertyChanged("Title");
        }
    }
Будет выводить строку title, которая будет с припиской "Azazza"? И такие манипуляции можно проводить любые, вплоть до вычислительных?
И, как я понимаю: последняя строка в set должна указывать - "какое событие" будет уведомлять что строка изменилась?

а в get - имеет смысл что-то такое делать?

Можно ссылку на несколько обучающих примеров?

Добавлено через 1 час 21 минуту
вычислительных* - в смысле любые вещи могу вытворять, вплоть до изменения вообще других данных в этот момент?

Добавлено через 2 минуты
Дополнение: и получается я могу вызывать в set функцию, в которую могу передать Параметр А(1 пост, т.е. id записи) для каких-то манипуляций?
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
11.02.2017, 19:10 6
Если тебе при изменении свойства нужно выполнять множество действий, то есть смысл создать отдельный метод для изменения свойства. Например, SetTitle для твоего примера.
0
2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
12.02.2017, 08:49  [ТС] 7
Ну так к этому я и клоню. Получается я могу запихать свою функцию, метод для каких-либо операций. Тем не менее, мне кое-что не понятно:
Возвращаясь к 1 посту. Имею
C#
1
ObservableCollection
, мне сказали про
C#
1
INotifyPropertyChanging
, я нашёл пример последнего(3 пост). Как будет выглядеть код, чтобы я обратился к элементу
C#
1
ObservableCollection
без его перебора. Или только с перебором всех нужных элементов(которые кстати не по порядку идут - сортировать при каждом обращении - дело неприятное. Вдруг будет куча записей - начнутся тормоза на слабых машинах)?

Добавлено через 1 час 59 минут
*всех нужных элементов* - не всех нужных, а перебора всего списка "ObservableCollection"
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
12.02.2017, 13:55 8
ObservableCollection тебе нужна, чтобы извещать контрол, что изменилось количество элементов в ней или порядок их расположения.
Класс же, экземпляры которого хранятся в коллекции, должен реализовать интерфейс INotifyPropertyChanged, чтобы извещать об изменении своих свойств.
Выбранный элемент из DataGrid можно получить, привязавшись к свойству SelectedItem через свойство зависимости модели представления.
Смотри пример. Свойства выделенного объекта отображаются в текстовых полях и этот объект можно удалить из коллекции.
Вложения
Тип файла: zip WpfApplication1.zip (19.5 Кб, 8 просмотров)
1
12.02.2017, 13:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2017, 13:55
Помогаю со студенческими работами здесь

Работа со строками. Нужно найти количество глассных букв в строке
Помогите пожалуйста, почему не хочет работать корректно данный код? (с англ символами всё хорошо, а...

Работа со строками. Определить количество пробелов в строке и вывести на экран
ввести строку символов.определить количество пробелов в строке и вывести на экран.вывести на экран...

Работа со строками. Как вывести последнее слово палиндром в моей строке?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; ...

[WPF] Обращение к строкам DataGrid
Привет.Есть код с Windows Forms datagridview.Rows.Cells это значение получение и 2 строки и 3...

Обращение к отдельной ячейке dataGrid
Снова здравствуйте! Подскажите пожалуйста, как именно конструкции языка VB обратится к...

Работа со строками, заполнить компоненты строками из файла
Привет! Нужна помощь в заполнении формы В общем, есть форма отправки письма. У нее есть 2 функции,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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