Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.03.2024
Сообщений: 9

Сортировка DataGridView по програмно добавленным столбцам

25.03.2024, 09:23. Показов 667. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пишу диплом, возникла проблема. Вопрос заключается в следующем, у меня есть датагридвью, в нем есть столбцы, которые я добавила программно, но они связаны с базой данных и некоторые из столбцов типа DataGridViewComboBoxColumn и теперь я хочу отсортировать строки в этой таблице так, чтобы сначала шли Директора потом Старший смены и так далее, пыталась сделать через Sort, dataGridView1_CellValueChanged и dataGridView1_SortCompare, все безуспешно...
вот мой код на один из методов
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 public partial class Временные_возможности : Form
 {
 
     private List<string> customOrder = new List<string> { "Директор", "Старший смены", "Повар", "Кассир", "Обучение касса", "Обучение кухня", "Стажировка" };
 
    private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    {
        if (e.Column.Index == 1) // Проверка, что сортируем столбец "должность"
        {
            string position1 = e.CellValue1.ToString();
            string position2 = e.CellValue2.ToString();
 
            int index1 = customOrder.IndexOf(position1);
            int index2 = customOrder.IndexOf(position2);
 
            e.SortResult = index1.CompareTo(index2); // Сравниваем индексы должностей
 
            e.Handled = true; // Помечаем, что обработали событие
        }
    }
}
а вот код создания данного столбца
C#
1
2
3
4
5
6
7
8
9
10
11
12
   DataGridViewComboBoxColumn ds = new DataGridViewComboBoxColumn();
   ds.HeaderText = "Должность";
   ds.Name = "ds";
   ds.MaxDropDownItems = 1;
   ds.Items.Add("Директор");
   ds.Items.Add("Старший смены");
   ds.Items.Add("Повар");
   ds.Items.Add("Кассир");
   ds.Items.Add("Обучение касса");
   ds.Items.Add("Обучение кухня");
   ds.Items.Add("Стажировка");
   dataGridView1.Columns.Add(ds);
Миниатюры
Сортировка DataGridView по програмно добавленным столбцам  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2024, 09:23
Ответы с готовыми решениями:

DataGridView обновить програмно ячейку, сортировка текста итд
Есть тройка вопросов по работе с DataGridView : 1. Как сортировать в тестовые ячейки , которых число ? 2. Как правильно обновить...

Сортировка по двум столбцам в DataGridView
Знаю, что тема уже кучу раз поднималась, но я так и не понял, как там что работает... Пока нашел эту тему, но опять же не разобрался что...

Сортировка DataGridView по нескольким столбцам одновременно
Доброй ночи уважаемые посетители. Я столкнулся с очередной проблемой. Мне требуется отсортировать DataGridView по 2 и трем столбцам...

9
 Аватар для Andrey-MSK
3353 / 2239 / 388
Регистрация: 14.08.2018
Сообщений: 7,569
Записей в блоге: 4
25.03.2024, 09:27
Цитата Сообщение от Соня4323 Посмотреть сообщение
датагридвью
Цитата Сообщение от Соня4323 Посмотреть сообщение
public partial class Временные_возможности : Form
Это не WPF...

Добавлено через 2 минуты
Цитата Сообщение от Соня4323 Посмотреть сообщение
хочу отсортировать строки в этой таблице так, чтобы сначала шли Директора потом Старший смены
C#
1
2
3
4
List<MyType> types = types
                     .OrderBy(t => t.Prop01)
                     .ThenBy(t => t.Prop02) // и т.д.
                     .ToList();
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
25.03.2024, 11:12
Соня4323, Andrey-MSK хотел сказать, что сортировку надо делать на уровне источника данных, т.е. некой коллекции ваших типов данных. У вас же есть классы данных для сотрудников? Если да, то у этого класса можно реализовать IComparable интерфейс и сортировка станет естественной для вашего типа.
Цитата Сообщение от Соня4323 Посмотреть сообщение
все безуспешно...
А почему индекс указан 1, а не 2?
C#
1
if (e.Column.Index == 1)
0
0 / 0 / 0
Регистрация: 03.03.2024
Сообщений: 9
25.03.2024, 11:16  [ТС]
Цитата Сообщение от Uswer Посмотреть сообщение
У вас же есть классы данных для сотрудников?
Классов нет..
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
25.03.2024, 11:18
Плохо.
0
 Аватар для Andrey-MSK
3353 / 2239 / 388
Регистрация: 14.08.2018
Сообщений: 7,569
Записей в блоге: 4
25.03.2024, 11:20
Соня4323, Как данные попадают в DGV?
0
0 / 0 / 0
Регистрация: 03.03.2024
Сообщений: 9
25.03.2024, 11:36  [ТС]
соединила с бд ссылкой
C#
1
 using (SqlConnection connection = new SqlConnection
0
 Аватар для Andrey-MSK
3353 / 2239 / 388
Регистрация: 14.08.2018
Сообщений: 7,569
Записей в блоге: 4
25.03.2024, 11:41
Цитата Сообщение от Соня4323 Посмотреть сообщение
соединила с бд ссылкой
А дальше?
0
0 / 0 / 0
Регистрация: 03.03.2024
Сообщений: 9
25.03.2024, 11:43  [ТС]
а дальше создала столбцы

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
            using (SqlConnection connection = new SqlConnection("Data Source=LAPTOP-JBA82PK5\\SQLEXPRESS;Initial Catalog=тукмак;Integrated Security=True"))
            {
                connection.Open();
                string query = "SELECT * FROM временныее"; // Замените на ваш запрос SQL
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                adapter.Fill(dataTable);
 
 
            }
 
 
 
            dataGridView1.DataSource = dataTable;
 
            // TODO: данная строка кода позволяет загрузить данные в таблицу "тукмакDataSet1.временныее". При необходимости она может быть перемещена или удалена.
            this.временныееTableAdapter.Fill(this.тукмакDataSet1.временныее);
 
            DataGridViewTextBoxColumn dss = new DataGridViewTextBoxColumn();
            dss.HeaderText = "ФИ";
            dss.Name = "dss";
            dataGridView1.Columns.Add(dss);
 
            DataGridViewComboBoxColumn ds = new DataGridViewComboBoxColumn();
            ds.HeaderText = "Должность";
            ds.Name = "ds";
            ds.MaxDropDownItems = 1;
            ds.Items.Add("Директор");
            ds.Items.Add("Старший смены");
            ds.Items.Add("Повар");
            ds.Items.Add("Кассир");
            ds.Items.Add("Обучение касса");
            ds.Items.Add("Обучение кухня");
            ds.Items.Add("Стажировка");
            dataGridView1.Columns.Add(ds);
 
            DataGridViewComboBoxColumn ds1 = new DataGridViewComboBoxColumn();
            ds1.HeaderText = "ПН";
            ds1.Name = "ds1";
            ds1.MaxDropDownItems = 2;
            ds1.Items.Add("7-16");
            ds1.Items.Add("16-22");
            ds1.Items.Add("вых");
            dataGridView1.Columns.Add(ds1);
 
            DataGridViewComboBoxColumn ds2 = new DataGridViewComboBoxColumn();
            ds2.HeaderText = "ВТ";
            ds2.Name = "ds2";
            ds2.MaxDropDownItems = 3;
            ds2.Items.Add("7-16");
            ds2.Items.Add("16-22");
            ds2.Items.Add("вых");
            dataGridView1.Columns.Add(ds2);
 
            DataGridViewComboBoxColumn ds3 = new DataGridViewComboBoxColumn();
            ds3.HeaderText = "СР";
            ds3.Name = "ds3";
            ds3.MaxDropDownItems = 4;
            ds3.Items.Add("7-16");
            ds3.Items.Add("16-22");
            ds3.Items.Add("вых");
            dataGridView1.Columns.Add(ds3);
 
            DataGridViewComboBoxColumn ds4 = new DataGridViewComboBoxColumn();
            ds4.HeaderText = "ЧТ";
            ds4.Name = "ds4";
            ds4.MaxDropDownItems = 5;
            ds4.Items.Add("7-16");
            ds4.Items.Add("16-22");
            ds4.Items.Add("вых");
            dataGridView1.Columns.Add(ds4);
 
 
            DataGridViewComboBoxColumn ds5 = new DataGridViewComboBoxColumn();
            ds5.HeaderText = "ПТ";
            ds5.Name = "ds5";
            ds5.MaxDropDownItems = 6;
            ds5.Items.Add("7-16");
            ds5.Items.Add("16-22");
            ds5.Items.Add("вых");
            dataGridView1.Columns.Add(ds5);
 
            DataGridViewComboBoxColumn ds6 = new DataGridViewComboBoxColumn();
            ds6.HeaderText = "СБ";
            ds6.Name = "ds6";
            ds6.MaxDropDownItems = 7;
            ds6.Items.Add("7-16");
            ds6.Items.Add("16-22");
            ds6.Items.Add("вых");
 
            dataGridView1.Columns.Add(ds6);
 
            DataGridViewComboBoxColumn ds7 = new DataGridViewComboBoxColumn();
            ds7.HeaderText = "ВС";
            ds7.Name = "ds7";
            ds7.MaxDropDownItems = 8;
            ds7.Items.Add("7-16");
            ds7.Items.Add("16-22");
            ds7.Items.Add("вых");
            dataGridView1.Columns.Add(ds7);
 
            dataGridView1.Columns["dss"].DataPropertyName = "ФИ";
            dataGridView1.Columns["ds"].DataPropertyName = "Должность";
            dataGridView1.Columns["ds1"].DataPropertyName = "ПН";
            dataGridView1.Columns["ds2"].DataPropertyName = "ВТ";
            dataGridView1.Columns["ds3"].DataPropertyName = "СР";
            dataGridView1.Columns["ds4"].DataPropertyName = "ЧТ";
            dataGridView1.Columns["ds5"].DataPropertyName = "ПТ";
            dataGridView1.Columns["ds6"].DataPropertyName = "СБ";
            dataGridView1.Columns["ds7"].DataPropertyName = "ВС";
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
25.03.2024, 20:15
Жесть! Ну допустим наполнили dataGridView1 данными, а как это всё хранится? Ответ на этот вопрос должен помочь вам осознать, что все столбцы сетки должны извлекаться из базы. Подглядите в интернете как реализуется хранение сменных графиков и сделайте у себя также. Затем вместо очень опасного запроса SELECT * FROM ..., создайте запрос на построение представления данных из разных таблиц и вот уже его грузите в программу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2024, 20:15
Помогаю со студенческими работами здесь

Сортировка по двум столбцам в DataGridView
Здравствуйте. В DataGridView информация о товарах. Есть столбцы &quot;Наименование&quot; и &quot;Страна&quot;. Как осуществить сортировку по правилу:...

Сортировка таблицы DataGridView по нескольким столбцам
Всем доброго дня! DataGridView наполнение происходит из DataSet возникла необходимость при клике по заголовку DataGridView...

Прокрутить DataGridView к последним добавленным данным
Есть таблица, которя постоянно заполняется. Уже давно вышло за пределы области DataGridView. Но после ввода новых данных сначала...

Сортировка массива по строкам и столбцам (не получается отсортировать по столбцам)
#include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;Windows.h&gt; #include &lt;string&gt; using namespace std; void...

DataGridView не обновляет позицию програмно добавленного столбца
Имеется программа которая по выбору в ComboBox загружает в DataGridViev все данные из всех столбцов, добавляя столбцы Select(на нулевую...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru