Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
ZanydaZanydnaya
3 / 3 / 2
Регистрация: 31.10.2017
Сообщений: 35
#1

Копирование столбца из DataGridView в другой DGV с уcловиями

29.12.2017, 14:46. Просмотров 225. Ответов 5
Метки нет (Все метки)

Приветствую всех)
Нужна здоровенная помощь. Итак:

c# winforms На форме расположены две DGV.
каждая DGW подключена к своей базе SQL.( через 'источники данных', так что у каждой есть свои dataset bindingsource и adapter)
То есть DGV1 здоровенная база, а DGV2 поменьше, но основной массив данных для нее берется из DGV1.

Вопрос 1: Заполнение DGV2 из DGV1
На данный момент заполняется так:
C#
1
2
3
4
5
6
7
8
9
10
11
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    
                    {
                    this.planPrivivokDataSet.Plan.AddPlanRow(this.planPrivivokDataSet.Plan.NewPlanRow());
                    planBindingSource.MoveLast();
 
                    dataGridView2.Rows[i].Cells[1].Value = dataGridView1.Rows[i].Cells[0].Value.ToString() + " ";// ФАМ
                        dataGridView2.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[1].Value.ToString() + " ";//ИМЯ
                        dataGridView2.Rows[i].Cells[3].Value = dataGridView1.Rows[i].Cells[2].Value.ToString() + " ";//ОТЧЕСТВО
// и т.д. еще порядка 20 колонок
                    }
Заполняется безумно долго( ~70к строк). Вопрос: как заполнить шустренько? помогите кодом. Ибо подозреваю что мой вариант с "копипастой" не самый логичный и умный 8)


Вопрос 2:
Как заполнять(DGV2 из DGV1) с условием?
Т.е. если в какой то строке ячейка,допустим, *имя* пуста, то заменить на "ПУСТО" , но не прерывать цикл.
Возможно выполнять данную проверку можно и после, если не получится при загрузке формы сразу отсеять, или даст нагрузку запредельную

Вопрос 3:

Некоторые ячейки помимо даты содержат доп информацию, например: *01.01.0001 третий квартал*. как оставить только дату? При заполнении(переносе данных из DGV1 в DGV2) или последующем формировании DGV1


Вот такие вот задачи(( но главное подскажите ответ на первый вопрос, если можно то примером. все остальное более менее представляю как делать, но уже после переноса данных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2017, 14:46
Ответы с готовыми решениями:

Копирование столбца из DataGridView. Копирование ячейки из ДатаГридВью
Доброго времени суток! Что то читал читал форумы и гугл - а так и не нашел для...

DataGridView - копирование столбца
Мне надо добавить столбец слева от выделенной ячейки. Делаю так:...

Копирование DataGridView в другой DataGridView
Всем привет. столкнулся с проблемой: имеется один DataGridView,я его заполняю...

Копирование записи из одного DataGridView в другой
В общем название само себя объясняет. Суть: я выбираю запись в DataGridView и...

Перенос данных из одного DGV в другой DGV
Нужно перенести данные из одного dgv в другой(в идеале ещё прибавить к столбцам...

5
netBool
238 / 241 / 148
Регистрация: 16.11.2010
Сообщений: 917
Записей в блоге: 8
Завершенные тесты: 5
30.12.2017, 10:19 #2
ZanydaZanydnaya, самое быстрое копирование идет через DataTable и DataSource. Зачем копировать отдельные ячейки dataGridView? В конце концов можно использовать DataTable.Clone() или Copy()
1
ZanydaZanydnaya
3 / 3 / 2
Регистрация: 31.10.2017
Сообщений: 35
09.01.2018, 09:34  [ТС] #3
netBool,
копировать отдельные ячейки потому что для каждой надо будет сделать проверку на формат, пусто\не пусто,... и, при тех или иных условиях, сделать определенный алгоритм действий...
Но да, Ваш вариант с клонированием спасет в некоторых моментах

Хм..а подскажите, как будет выглядеть код переноса DataTable и DataSource?
Допустим колонки Фамилия, Имя, Отчество dgv1, перенести в одну колонку ФИО dgv2?

Добавлено через 54 минуты
1.Клонировать нельзя, так как dgv2 имеет свою пополняемую sql базу
2.Копировать не получается, так как * строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления привязан к данным*

С DataTable и DataSource не понимаю как сделать(
0
hoolygan
349 / 276 / 76
Регистрация: 21.06.2016
Сообщений: 1,091
09.01.2018, 11:09 #4
Ну что можно посоветовать - отвязывайте привязку данных.
И учитесь работать с кодом, с поздними привязками, с моделью данных, с классами. Тогда вопросов таких простых будет намного меньше.
А работа с контролами-гридами, да еще и в цикле - это один из самых наихудших вариантов. Скорость работы ПО падает в сотни раз в сравнении с работой с таблицами/классами связанными с этими контролами.
1
ZanydaZanydnaya
3 / 3 / 2
Регистрация: 31.10.2017
Сообщений: 35
09.01.2018, 13:26  [ТС] #5
hoolygan,
Угу, только и остается))
Ладненько, буду пытаться, коль легких путей нет

Добавлено через 4 минуты
А как скопировать\клонировать конкретную колонку?

Добавлено через 3 минуты
При загрузке формы, допустим 2(Имя) и 3(отчество)колонки скопировать\клонировать в 1 и 2 соотвественно
0
hoolygan
349 / 276 / 76
Регистрация: 21.06.2016
Сообщений: 1,091
09.01.2018, 17:18 #6
Цитата Сообщение от ZanydaZanydnaya Посмотреть сообщение
А как скопировать\клонировать конкретную колонку?
Простого варианта не видел/не знаю.
Могу посоветовать из 2-ух объектов DataTable создать 3-ий используя Linq + Join, либо же, если данные находятся в БД - то делать правильный селект из неё.
0
09.01.2018, 17:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2018, 17:18

Передача значения определенного столбца из одного datagridview в другой
Добрый день. Есть определенная проблема. Есть datagridview, необходимо, чтобы...

DGV, задать размер столбца в символах
Свойство width задает размер в пикселях,можно ли как-то задать размер столбца в...

Элементы столбца DGV переписать в массив
Добрый день! Подскажите как поместить значения из 1 столбца datagrid в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru