Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2015, 20:15   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Какой выход из ситуации?

C# win forms.

Есть 3 таблицы. Нужно их отсортировать, вырубив встроенную сортировку.
Препод любит создавать велосипед. Так вот, сортирую я первый столбец, окей, но в других столбцах значения остаются на прежнем месте, т.е "целостность" таблицы нарушается. Соответственно надо менять и значения в таблице. Вот только теперь проблема, не нашел я как менять местами строки в datagridview, А менять местами ячейки ну ооочень нудно и неправильно имхо. Собственно как быть ?
Praud вне форума Ответить с цитированием
Старый 06.01.2015, 20:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не знаю можно ли в шарпее так или нет, я бы попробовал грид прицепить к LINQ.
В нем прописывать сортировку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 20:29   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Метод Sort у DataGridView нельзя использовать что ли?

А что и как вы туда выводить? Может быть проще сами данные отсортировать и перевывести.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.01.2015, 20:39   #4
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Нельзя использовать Sort родной.

А разница что сортировать? данные или ячейку с данными. Вот я отсортировал ячейку, которую нужно. Но надо же теперь, чтобы вся строка вместе с этой ячейкой отсортировалась
Praud вне форума Ответить с цитированием
Старый 06.01.2015, 20:48   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык если вы объекты выводите, то при их сортировке и получится сразу сортировка "всей строки".

Что и как вы выводите в dgw?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.01.2015, 21:16   #6
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Код:
void Sort1(DataGridView t)
        {
            int i, j;
            int temp;
            string temp2;
            char temp3;

            for (j = 1; j < t.RowCount; j++)
            {

                if (Convert.ToInt32(t[0, j].Value) < Convert.ToInt32(t[0, j - 1].Value))
                {
                    //Что бы значение j мы не меняли а работали с i
                    i = j;
                    //Меняем местами пока не найдем нужное место
                    do
                    {
                        temp = Convert.ToInt32(t[0, i].Value);
                        t[0, i].Value = t[0, i - 1].Value;
                        t[0, i - 1].Value = temp;
                        temp2 = Convert.ToString(t[1, i].Value);
                        t[1, i].Value = t[1, i - 1].Value;
                        t[1, i - 1].Value = temp2;
                        temp2 = Convert.ToString(t[2, i].Value);
                        t[2, i].Value = t[2, i - 1].Value;
                        t[2, i - 1].Value = temp2;
                        temp = Convert.ToInt32(t[3, i].Value);
                        t[3, i].Value = t[3, i - 1].Value;
                        t[3, i - 1].Value = temp;
                        temp3 = Convert.ToChar(t[4, i].Value);
                        t[4, i].Value = t[4, i - 1].Value;
                        t[4, i - 1].Value = temp3;

                        i--;
                        //защита от выхода за пределы массива
                        if (i == 0) break;
                    } while (Convert.ToInt32(t[0, i].Value) < Convert.ToInt32(t[0, i - 1].Value));
                }
            }
Вот так я сортирую
Praud вне форума Ответить с цитированием
Старый 06.01.2015, 21:17   #7
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

при этом мне действительно нужна только сортировка первого столбца
Praud вне форума Ответить с цитированием
Старый 06.01.2015, 21:41   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вряд ли стоит так сортировать меняя ячейки (или даже если строки, не важно) в самом гриде в процессе сортировки, скорее всего гораздо эффективнее по производительности будет прочитать все данные в массив/массивы, их отсортировать и вывести.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем косяк и какой выход Gefo PHP 5 24.12.2012 17:55
Кнопка Выход(на выход Из программы)С++ Напишите код ProGec4 Общие вопросы C/C++ 3 19.02.2012 15:36
Методы защиты ПО, есть ли выход из безвыходной ситуации? Человек_Борща Общие вопросы по программированию, компьютерный форум 12 30.10.2011 02:55
Какой язык выбрать в данной ситуации Translator Помощь студентам 8 28.05.2011 03:55
Давно Ищу Выход из ситуации! ЯЧайник Софт 1 27.01.2011 20:29