![]() |
|
Модераторы: gambit |
![]()
|
|
| AntonVolnikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 29.6.2008 Репутация: нет Всего: нет |
Здраствуйте всем.
Я новичок в C# так что не судите строго. У меня следующая проблема - есть DataSet dsMain в нем находятся два DataTable "RESELLERS" и "RESELLER_CARDS" в таблице "RESELLERS" есть ключевое поле "ID" а в таблице "RESELLER_CARDS" поле "RESELLER_ID" Реактирование таблицы "RESELLER_CARDS" ведётся через DataGridView хочу в нем создать столбец типа DataGridViewComboBoxColumn в котором будет отображаться поле "RESELLERS.NAME" а принималось значение "RESELLERS.ID". и вот как я это делаю
выдаётся Exceprion - System.FormatException и столбец принимает значение столбца "RESELLERS.ID". Кто знает кде у меня ошибка? |
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: нет Всего: 13 |
Тоесть, чтобы тебе выводилось ResellerName, а если ты захочешь редактировать, то будешь редактировать ResellerId?
-------------------- ![]() |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
если в таблице Resellers нет поля Name, то во-первых датасорс должен быть другой...а во вторых DisplayMember другой...
-------------------- СУВ, Partizan. |
|||
|
||||
| Grandpa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.7.2003 Где: Одесса Репутация: нет Всего: нет |
А как у тебя прога сможет разлечить какую из таблиц использовать для формирования items?! В dsMain у тебя две таблицы.
Создай BindingSource, укажи в нём в качестве DataSource свой dsMain, а в качестве DataMember - RESELLERS. Далее RESELLER_ID.DataSource = <имя BindingSource>. Ещё.
|
|||
|
||||
| AntonVolnikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 29.6.2008 Репутация: нет Всего: нет |
Grandpa зделал как ты сказал но всеровно при попыткм добавления записи столбец RESELLER_ID остоятся путым (NULL)
Да к томуже при заполнении грида столбец RESELLER_ID остоётся пустым. Это сообщение отредактировал(а) AntonVolnikh - 5.7.2008, 13:09 |
|||
|
||||
| Grandpa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.7.2003 Где: Одесса Репутация: нет Всего: нет |
А где
|
|||
|
||||
| AntonVolnikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 29.6.2008 Репутация: нет Всего: нет |
Grandpa но ведь в таблице "RESELLERS" нет поля "RESELLER_ID"?
Если добавить строку вида
то результат тотже - столбец остаётся пустым. |
|||
|
||||
| Grandpa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.7.2003 Где: Одесса Репутация: нет Всего: нет |
Но оно есть в RESELLER_CARDS! Вы же ведёте редактирование в таблице RESELLER_CARDS поля RESELLER_ID, но просто вместо прямого ввода его значения, вы хотите воспользоваться перечнем из таблицы RESELLERS. Таблица RESELLERS используется для построения свойства Items в Combobox-е (не напрямую!). Для этого в свойстве DataPropertyName вы указывает поле RESELLER_ID таблицы RESELLER_CARDS. В DataSource - источник для перечня, т.е. посредством bindingSource таблицу RESELLERS. В DisplayMember - NAME (таблицы RESELLERS) это будет отображаться в выпадающем списке. В ValueMemeber - ID (таблица RESELLERS), это значение будет помещаться в поле RESELLER_ID (таблица RESELLER_CARDS). |
|||
|
||||
| AntonVolnikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 29.6.2008 Репутация: нет Всего: нет |
Переделал вот так
но всё равно происходит Exception System.FormatException при заполнении грида. |
|||
|
||||
| Grandpa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.7.2003 Где: Одесса Репутация: нет Всего: нет |
Вроде всё верно. Я только заменил имя combobox-а, чтобы не путаться. А как формируется dataGridView? И уверены ли вы, что ID и RESELLER_ID имеют совпадающие значения? Просмотрите таблицы менеджером. Вообще, данные в таблицы загружены? Посмотри в дебугере. Чтобы разобраться сделайте проект с типизированым набором, т.е. используй дизайнер (если конечно вы в MS VS). Т.е. не ручками, а дизайнером. А потом посмотрите сгенерированный код, очень полезно Это сообщение отредактировал(а) Grandpa - 5.7.2008, 19:21 |
|||
|
||||
| AntonVolnikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 29.6.2008 Репутация: нет Всего: нет |
Grandpa Большое спасибо за совет!
Оказалось что в таблицах "RESELLERS" "RESELER_CARDS" столбцы "ID" и "RESELLER_ID"соответствено разных типов. в одной System.Int64 а во второй System.String. Всё Заработало . СУППЕР............... Ещё раз большое спасибо ! |
|||
|
||||
| Grandpa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.7.2003 Где: Одесса Репутация: нет Всего: нет |
Небольшой совет. Чтобы не случались ошибки такого типа и для предотвращения нарушения целосности данных, свяжите в базе таблицы отношением один-ко-многим. Ваша ошибка была бы выявлена ещё на этапе создания отношения. Удачи.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |