| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Помомогите связать DataGridView и dataSet |
| Автор: okaton 13.10.2008, 22:05 | ||
| Доброго времени суток Помогите решить проблему. Есть DataGridView1 и DataGridView2, также есть 2 класса. Нужно связать DataGridView1 и DataGridView2 с двумя классами таким образом, что бы когда выбираешь строку в DataGridView1 в DataGridView2 отображались дополнительные данные. После этого организовать связь с dataSet, ну и в нем соответственно сохранять и загружать данные.
|
| Автор: Partizan 13.10.2008, 23:44 |
| кросспостинг - это не хорошо... |
| Автор: okaton 13.10.2008, 23:56 |
| Partizan, может это и не хорошо, но мне нужна реально действенная помощь, причем довольно срочно, а обратится мне больше не куда. И что же мне делать? бублики пинать? |
| Автор: okaton 14.10.2008, 14:20 |
| MasterOfCode, спасибо большое. using System.Linq у меня такого нет, это из framework 3? По ходу 3.5 сейчас установлю |
| Автор: MasterOfCode 14.10.2008, 14:25 |
3.5 |
| Автор: okaton 14.10.2008, 15:20 |
| Скажите а MVS 2005 работает с Framework 3.5? |
| Автор: okaton 14.10.2008, 15:38 |
| решил скачать MVS 2008 |
| Автор: Magnifico 14.10.2008, 20:13 |
| MasterOfCode взаимно. okaton ключевые слова: Nowa + MVS 2008 |
| Автор: okaton 14.10.2008, 20:35 | ||
Стесняюсь спросить, а что такое Nowa? |
| Автор: Partizan 15.10.2008, 09:05 |
| присоединяюсь к вопросу) Что ещё за Nowa? |
| Автор: okaton 15.10.2008, 10:50 | ||||||||||||||||
| Установил 9 студию Возникли траблы в отладчике
Ругается на .Where и .ToList<MyParentClass> |
| Автор: Idsa 15.10.2008, 11:21 | ||
Необходимо подключить using System.Linq; |
| Автор: okaton 15.10.2008, 12:12 | ||
| Idsa, упс, это я действительно проглядел только почему-то он у меня не подключается:
|
| Автор: MasterOfCode 15.10.2008, 12:17 |
| Добавь библиотеку в reference |
| Автор: Idsa 15.10.2008, 12:26 |
Хм... Для этого нужна библиотека System.Core. Если у Вас действительно стоит VS 2008 и Target Framework выставлен в 3.5, то она должна добавляться автоматически. |
| Автор: okaton 15.10.2008, 13:10 |
| MasterOfCode, Idsa, спасибо я проект конвертировал с 2005 на 2008... ну и о нововведения не знал... зашел в свойства проекта и обнаружил подключение framework, соответственно был 2.0, поменял на 3.5 и ура! Подскажите пожалуйста, а как мне теперь заполнить dataSet? |
| Автор: MasterOfCode 15.10.2008, 13:34 |
| Тебе сначала нужно заполнить DataTable. Вот ссылка на MSDN http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx dataSet1.Tables.Add(YouDataTable); |
| Автор: okaton 15.10.2008, 13:40 | ||||
| MasterOfCode, спасибо, буду разбираться Попутно появились вопросы: 1. А как мне к этой красоте подключить столбцы, которые я нарисовал в дизайнере dataGridView? С этим разобрался, надо в свойстве Колонки DataGridView изменить DataPropertyName подставив член класса 2. Сортировка колонок не происходит, отладчик ругается
Как можно выйти из этого положения? 3. Кто-нибудь пользовался методом System.Data.DataTableExtensions.ToDataTable<T>(IEnumerable<T> source), эту табличку потом можно подключить к dataSet? |
| Автор: okaton 16.10.2008, 18:41 | ||||
| У меня не получается создать новую строку (а тем более правило для создания строк) в таблицах. :( Как сделать так чтобы можно было создать новую строку в 2 таблицах и соответственно данные в ней привязать к коллекции. Все создание строк работает только на этом этапе
Ну и еще проблема не работает сортировка в dataGridView...
|
| Автор: MasterOfCode 16.10.2008, 20:07 | ||
я ошибся в этой строчке, e.ColumnIndex нужно заменить на номер колонки с идишником, в данном случаи на 0. А у грида разрешение на добавление стоит? А у грида разрешение на сортировку стоит? |
| Автор: okaton 16.10.2008, 20:23 | ||||
Стоит. Строки можно добавлять и сортировать. Пока я не нажимаю:
|
| Автор: MasterOfCode 16.10.2008, 20:43 | ||||
Если после повторного нажатия, то возможно из за этого:
Замени на:
|
| Автор: okaton 16.10.2008, 21:34 | ||||
| После первого нажатия. Ругается на сортировку:
e.RowIndex =-1 Строки не добавляются. После изменения при повторном нажатии добавляются 2 строки в dataGridView2 с сохранением данных, но к каждой строке в таблице dataGridView1 |
| Автор: MasterOfCode 17.10.2008, 07:09 | ||
В событие CellClick добавь условие:
|
| Автор: okaton 17.10.2008, 10:12 | ||
| Добавил. Ошибка соответственно исчезла. В остальном тоже самое: сортировка не происходит, строки не добавляются
Звездочка после нажатия toolStripButton1_Click также исчезает. |
| Автор: okaton 17.10.2008, 22:00 |
| Я не очень понимаю концепцию dataTable. Мне при этом нужна будет коллекция которая у меня сейчас есть или dataTable сама является коллекцией (если это можно так назвать) |
| Автор: okaton 18.10.2008, 15:06 | ||||
Чем можно заменить эту строчку для dataDridView?
вот так
|
| Автор: okaton 18.10.2008, 21:37 | ||
В общем я переработал код еще раз:
|
| Автор: okaton 20.10.2008, 12:15 | ||||||
| Теперь как-то нужно опять связать 1 и 2 таблицу и при создании строк предусмотреть обновление Column0_IndexTable1 и Column00_IndexTable2 Автоинкремент работает как-то не правильно, почему он увеличивается если строка не создалась? P.S. А что такое вот это (я понимаю что это первичный ключ таблицы, как его использовать?)
и вот это (тут я понимаю организовываются связи, а как организовать подходящую для меня?)
P.P.S. Можно каким-либо образом воздействовать на dataGridView2_UserAddedRow чтобы при добавлении новой строки в dataGridView2 учитывался этот код, если вставить на прямую соответственно добавятся много не нужных строк
|
| Автор: okaton 20.10.2008, 14:50 | ||
Судя по всему, эта связь организована правильно, но она почему-то не работает
|
| Автор: okaton 20.10.2008, 17:48 |
| Походу дело не в DataRelation, а в чем-то другом... |
| Автор: okaton 20.10.2008, 18:35 | ||||
А почему отладчик ругается?
|
| Автор: okaton 20.10.2008, 23:32 | ||
| Ларчик просто открывался
Автоинкремент работает как-то не правильно, почему-то он увеличивается если строка не создалась. Логика-то его мне ясно, но можно ли этого избежать? |
| Автор: okaton 22.10.2008, 10:58 |
| Нужно получить все значения колонки Column0_IndexTable1 и создать условие. Если все числа в колонке идут по порядку, то добавить строку = последнее число + 1. Если нет, то добавить строку с числом которого не хватает Как получить все значения (массив) колонки Column0_IndexTable1 ? Смысл такой колонка Column0_IndexTable1 уникальна, соответственно нужно что бы числа были различны и желательно по порядку (в том числе при загрузке из xml). Если кто-то может предложить другое более удачное решение буду рад |
| Автор: MasterOfCode 22.10.2008, 12:55 | ||
[ИМХО]Сколько не сталкивался - это все глупости. Зачем тебе это? [/ИМХО] |
| Автор: okaton 22.10.2008, 13:22 | ||||||
Смысл такой колонка Column0_IndexTable1 уникальна, соответственно нужно что бы числа были различны и желательно по порядку (в том числе при загрузке из xml). Если кто-то может предложить другое более удачное решение буду рад smile P.S. в dataDridView2 отображаются данные опирающиеся на Column0_IndexTable1 P.P.S. Почему в 2008 студии не получается совершить такое действие:
в 2005 получается, как же это сделать в 2008 |
| Автор: MasterOfCode 22.10.2008, 13:26 |
| Выбирай максимальное и увеличивай на 1. Если будешь писать свой генератор ID на тех условиях что озвучил то он займет кучу времени чтоб выдать тебе нужную циферку, а оно надо пользователю, но мой взгляд пользователям без разницы в каком виде ты хранишь ID, лишь бы работало быстро. Да, и не мешало бы на каждый вопрос создавать свою тему. |
| Автор: okaton 22.10.2008, 13:30 |
| Как я получу максимальное значение из колонки, если я не знаю как получить все значения колонки, а обращаться к каждой это наверное неправильно, хотя можно создать цикл |
| Автор: masel 11.1.2009, 08:23 | ||
Извеняюсь, за глупый вопрос но как? |