![]() |
|
Модераторы: gambit |
![]()
|
|
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
Вобщем создаю типизированный датасет, размещаю его на одной из форм. Как можно взаимодействовать с ним из другой формы проекта через дизайнер? Нужно указать его в качестве datasource, но в дизайнере его не видно.
1) Пробывал изменять его на public, не помогло, дизайнер его все равно не видит. 2) Пробывал добавить его как новый DataResource с помощью мастера, но мастер максимум добавляет саму форму, а компоненты на ней он не видет. или может что другое посоветуете по организации приложения? А суть в том что я работаю с БД Access, планировал загружать все таблицы и связи в один общий для всех форм DataSet и потом с ним работать, после вносимых изменений обновлять за один раз файл access. Столкнувшись с вышеизложенной проблемой пока нечего лучшего не придумал как создавать для каждой формы свой DataSet. Но это ведь нерационально? |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Конечно. Если я правильно понял проблему, то нужно а затем из други форм обращаться к DataSet по такому принципу: form1.myDataSet, где form1 - форма, на которую брошен DataSet. |
|||
|
||||
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
Спасибо, Вы поняли правильно. Но насколько я понял, данный способ годится если писать код вручную, а не через дизайнер, да? Дело в том, что в дизайнере в качестве DataSource вроде нельзя прописать подобный код "form1.myDataSet", а можно только выбрать из списка. А в списке как раз не виден тот public DataSet. По крайней мере у меня не получалось :( А править код который генерируется дизайнером ведь тоже как-то нехорошо :( может есть еще идеи? Это сообщение отредактировал(а) xess - 19.3.2007, 04:30 |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Дизайнер генерирует обычный код. Так что эти два способа принципиально ничем отличаться не могут. Итак, смотрим название типизированного ДатаСета. Делаем его public. А потом обращаемся к нему так, как я писал выше. |
|||
|
||||
| Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: нет Всего: 18 |
||||
|
||||
| NET_or_not_NET |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: 1 Всего: 1 |
Вся проблемма в том что xess делат так:
А не надо его делать частью одной из форм - делай его частью проекта (солюшина) и тогда он будет виден всем !!!!! ведь как я понимаю нужен
Вот и всё! P.S. програмно:
проще: в дизайнере еще проще, а главное наглядней Солюшн -> адд новый итемс -> новый ДатаСет и у Вас все в гарфике, с вкладочкой пропертес, с тулбоксом - блеск! Это сообщение отредактировал(а) NET_or_not_NET - 20.3.2007, 15:01 |
||||||
|
|||||||
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
Всем спасибо за советы! Особенно NET_or_not_NET!
|
|||
|
||||
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
На самом деле проблема до сих пор актуальна, кроме как использования singleton'а нечего лучше не придумал
просто каждому экземпляру присваю значение ShareDataSet.GetInstance(), где класс ShareDataSet реализую так:
есть еще идеи? Это сообщение отредактировал(а) xess - 23.3.2007, 10:44 |
|||
|
||||
| NET_or_not_NET |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: 1 Всего: 1 |
Есть.
Надо на главной форме создать экземпляр ДатаСета - new А затем в каждую форму использующую это ДатаСет передавать на него ссылку - ref Правда дизайнером придется пожертвовать... Это сообщение отредактировал(а) NET_or_not_NET - 23.3.2007, 15:07 |
|||
|
||||
| xess |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
Если я правильно понял, эти ссылки создавать можно только "вручную"? Т.е. дизайнер в итоге все равно не будет видеть эти ссылки, а следовательно и общий датасет? Все-таки я хочу разобраться, можно ли общий экземпляр датасет к дизайнеру подцепить, чтоб его все формы видели?! Использование singleton'а в принципе мою задачу решила, но есть маленький недостаток: когда я размещаю пустые экземпляры на каждую форму с помощью дизайнера, он автоматом генерирует код:
а мне бы достаточно было написать autoDataSet1 = ShareDataSet.GetInstance(); т.е. без оператора new. Но править код генератора насколько я знаю, не рекомендуется... Но ведь и оставлять конструкцию для каждой формы типа:
тоже ведь не совсем оптимально? Это сообщение отредактировал(а) xess - 23.3.2007, 15:10 |
||||||
|
|||||||
| NET_or_not_NET |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: 1 Всего: 1 |
Ага, ведь все равно создаеться new Сторлкнулся с тем что, когда на форму в дизайнене бросаеш новый ДатаСет в окне есть возможность указать Referenced DataSet... использую его а он всеровно new надо разбираться, класная тема ! Это сообщение отредактировал(а) NET_or_not_NET - 23.3.2007, 16:27 |
|||
|
||||
| NET_or_not_NET |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: 1 Всего: 1 |
перепробывал все что я знал - все сводиться к
System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error вообщем мои субъективные выводы - если хочешь в дизайнере тогда new - если работать с сылками тогда ручками Я обычно работаю по второму варианту, не создавая на каждой форме новый экземпляр. чемто надо пожертвовать либо наглятностью (удобностью) либо производительностью (хотя мне кажеться что работа с небольшими наборами данных не скажеться на производительности) Это сообщение отредактировал(а) NET_or_not_NET - 23.3.2007, 16:27 |
|||
|
||||
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
NET_or_not_NET, я вот попробывал для экземпляра датасета в properties установить для GenerateMember значение false, в итоге генератор кода переместил его во внутрь InitializeComponent() и определил как "is declared in a local scope, because its GenerateMember property is false". Может тут надо копать?
Добавлено @ 16:50 По-моему, так оно и есть. По крайней мере потом можно добавить вручную в код этот самый датасет и при этом он еще в дизайнере сохраняется. Правда лишним остается что в InitializeComponent() этой формы все равно создается экземпляр датасета с помощью new, но как я понял, он потом сразу и уничтожается |
|||
|
||||
| NET_or_not_NET |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 10.1.2007 Репутация: 1 Всего: 1 |
Я тоже пробывал эксперементировать с GenerateMember и даже с ресурсами (где указанно расположение ДатаСет в дизайнере)
нифига не помогает, а что касаеться
честно говорю - не знаю я пошел просить гнигу Троелсена, буду искать что он пишет про дизайнер в VS2005, как найду чтонибуть интересное отпишусь! Тема Не буду создавать новый пост.... Книгу мне не дали - сказали Designer не трогать, писать как писал через ссылки руками, и не заниматься ерундой! НУ и ладно! Все равно желание работать в дизайнере + по ссылкам = здоровое желание! Удачи и хороших выходных ! Это сообщение отредактировал(а) NET_or_not_NET - 23.3.2007, 17:43 |
|||
|
||||
| Foli |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.4.2007 Где: Europe Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |