Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
ZanydaZanydnaya
3 / 3 / 0
Регистрация: 31.10.2017
Сообщений: 35
#1

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

29.12.2017, 14:46. Просмотров 212. Ответов 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 в другой DGV с уcловиями (C#):

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

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

Копирование DataGridView в другой DataGridView - C#
Всем привет. столкнулся с проблемой: имеется один DataGridView,я его заполняю вручную, нажимаю кнопку и в этой же форме,только в другом...

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

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

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

5
netBool
220 / 223 / 74
Регистрация: 16.11.2010
Сообщений: 830
Записей в блоге: 8
Завершенные тесты: 5
30.12.2017, 10:19 #2
ZanydaZanydnaya, самое быстрое копирование идет через DataTable и DataSource. Зачем копировать отдельные ячейки dataGridView? В конце концов можно использовать DataTable.Clone() или Copy()
1
ZanydaZanydnaya
3 / 3 / 0
Регистрация: 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
256 / 263 / 66
Регистрация: 21.06.2016
Сообщений: 1,034
09.01.2018, 11:09 #4
Ну что можно посоветовать - отвязывайте привязку данных.
И учитесь работать с кодом, с поздними привязками, с моделью данных, с классами. Тогда вопросов таких простых будет намного меньше.
А работа с контролами-гридами, да еще и в цикле - это один из самых наихудших вариантов. Скорость работы ПО падает в сотни раз в сравнении с работой с таблицами/классами связанными с этими контролами.
1
ZanydaZanydnaya
3 / 3 / 0
Регистрация: 31.10.2017
Сообщений: 35
09.01.2018, 13:26  [ТС] #5
hoolygan,
Угу, только и остается))
Ладненько, буду пытаться, коль легких путей нет

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

Добавлено через 3 минуты
При загрузке формы, допустим 2(Имя) и 3(отчество)колонки скопировать\клонировать в 1 и 2 соотвественно
0
hoolygan
256 / 263 / 66
Регистрация: 21.06.2016
Сообщений: 1,034
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
Привет! Вот еще темы с ответами:

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

Как удалить столбцы DGV до определённого столбца? - C#
как удалять столбцы datagridview до определенногостолбца, вот скрин

Как получить координату левого края столбца в DGV - C#
Здравствуйте. Подскажите пожалуйста как получить координату левого края столбца в datagridwiev? или в какую сторону рыть)

Записать значение последней строки из первого столбца DGV в переменную - C#
Доброго времени суток ув. гуру!! Возник такой опрос , как записать значение последней строки из первого столбца ГридВью в переменную? Это...


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

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

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