Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как забиндить контролы 
:(
    Опции темы
maxnoskov
Дата 11.9.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Такая проблема
Есть датасет с одной главной таблицей и 9 подчиненными, через идентификатор.
Имеется форма для ввода данных с 5 табконтролами и некоторым количеством контролов: Combo, textbox, checkbox.
Если я связываю контролы подчиненных таблиц через главную, т.е. через отношение:
главная_таблица.отношение.поле_подчиненной_таблицы то форма открывается несколько минут, как будто виснет, но потом открывается
Если завязываю контролы напрямую, т.е. 
textBox13.DataBindings.Add("Text", Датасет, "подчиненная_таблица.поле",);
То форма открывается быстро, но нужно менять позиции в подчиненных таблицах вручную
Как быть? Помогите пожалуйста?
PM MAIL   Вверх
mr.DUDA
Дата 12.9.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Скинь проект мне на мыло, я посмотрю.


--------------------
user posted image
PM MAIL WWW   Вверх
Naum
Дата 12.9.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(mr.DUDA @  12.9.2006,  11:48 Найти цитируемый пост)
Скинь проект мне на мыло, я посмотрю. 


Не честно, я тоже хочу. smile 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 13.9.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Можно к ответу архив приаттачить. Если жалко или нельзя весь проект - хотя бы датасет и форму его использующую. Иначе ничего не понять.


--------------------
user posted image
PM MAIL WWW   Вверх
maxnoskov
Дата 13.9.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Цитата(mr.DUDA @ 13.9.2006,  12:01)
Можно к ответу архив приаттачить. Если жалко или нельзя весь проект - хотя бы датасет и форму его использующую. Иначе ничего не понять.

Не понял smile . Я же вроде весь проект скинул
PM MAIL   Вверх
mr.DUDA
Дата 13.9.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Ok, уже получаю smile


--------------------
user posted image
PM MAIL WWW   Вверх
mr.DUDA
Дата 13.9.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Да, видимо всё дело в сложности датасета, т.к. виснет в самом конце InitializeComponent - когда нужно выставить тек. значения во всех контролах. BindingContext начинает разматывать связи в датасете, и если тормознуть где-то посередине, то Call Stack выглядит подобным образом:
Код
    mscorlib.dll!string.StartsWith(string value, System.StringComparison comparisonType) + 0xf0 bytes    
    System.Data.dll!System.Data.DataTable.ParseSortString(string sortString) + 0x16b bytes    
    System.Data.dll!System.Data.DataView.System.ComponentModel.IBindingList.Find(System.ComponentModel.PropertyDescriptor property, object key = {System.DBNull}) + 0x87 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.Find(System.ComponentModel.PropertyDescriptor property, object key, bool keepIndex) + 0x5a bytes    
>    System.Windows.Forms.dll!System.Windows.Forms.ListControl.SelectedValue.set(object value) + 0x66 bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.dll!System.ComponentModel.ReflectPropertyDescriptor.SetValue(object component = {System.Windows.Forms.ComboBox}, object value = {System.DBNull}) + 0x11b bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Binding.SetPropValue(object value) + 0xa6 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Binding.PushData(bool force) + 0x80 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PushData(out bool success = true) + 0x50 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PushData() + 0xe bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CurrencyManager_PushData() + 0x35 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e = {System.EventArgs}) + 0x35 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0x189 bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.ChangeRecordState(int newPosition, bool validating, bool endCurrentEdit, bool firePositionChange = true, bool pullData) + 0x11d bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.UpdateIsBinding(bool raiseItemChangedEvent = true) + 0x75 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.UpdateIsBinding() + 0xa bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e) + 0x2e2 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.AddNew() + 0x106 bytes    
    System.Data.dll!System.Data.DataView.System.ComponentModel.IBindingList.AddNew() + 0x5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.AddNew() + 0x1e bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xd1 bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xd1 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.FinishAddNew(int currentIndex, bool success) + 0x15b bytes    
    System.Data.dll!System.Data.DataRowView.CancelEdit() + 0x24 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CancelCurrentEdit() + 0x6c bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xdf bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xd1 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.FinishAddNew(int currentIndex, bool success) + 0x15b bytes    
    System.Data.dll!System.Data.DataRowView.CancelEdit() + 0x24 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CancelCurrentEdit() + 0x6c bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xdf bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xd1 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.FinishAddNew(int currentIndex, bool success) + 0x15b bytes    
    System.Data.dll!System.Data.DataRowView.CancelEdit() + 0x24 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CancelCurrentEdit() + 0x6c bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xdf bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xd1 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.FinishAddNew(int currentIndex, bool success) + 0x15b bytes    
    System.Data.dll!System.Data.DataRowView.CancelEdit() + 0x24 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CancelCurrentEdit() + 0x6c bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xdf bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xd1 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.FinishAddNew(int currentIndex, bool success) + 0x15b bytes    
    System.Data.dll!System.Data.DataRowView.CancelEdit() + 0x24 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CancelCurrentEdit() + 0x6c bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xdf bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentChanged(System.EventArgs e) + 0xbb bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xd1 bytes    
    System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0xf1 bytes    
    System.Data.dll!System.Data.DataView.FinishAddNew(int currentIndex, bool success) + 0x15b bytes    
    System.Data.dll!System.Data.DataRowView.CancelEdit() + 0x24 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.CancelCurrentEdit() + 0x6c bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.ParentManager_CurrentItemChanged(object sender, System.EventArgs e) + 0xdf bytes    
    System.Windows.Forms.dll!System.Windows.Forms.RelatedCurrencyManager.Bind(System.Windows.Forms.BindingManagerBase parentManager, string dataField) + 0xb0 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.BindingContext.EnsureListManager(object dataSource, string dataMember) + 0x1e1 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.BindingContext.UpdateBinding(System.Windows.Forms.BindingContext newBindingContext, System.Windows.Forms.Binding binding = {System.Windows.Forms.Binding}) + 0x79 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.UpdateBindings() + 0x52 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0x3a bytes    
    System.Windows.Forms.dll!System.Windows.Forms.ListControl.OnBindingContextChanged(System.EventArgs e) + 0x27 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.set(System.Windows.Forms.BindingContext value) + 0x8a bytes    
    System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.BindingContext.set(System.Windows.Forms.BindingContext value) + 0x5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.BindingContext.get() + 0x4e bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContext.get() + 0x5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContext.get() + 0x5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContext.get() + 0x5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContext.get() + 0x5 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.ListControl.SetDataConnection(object newDataSource = {Child.DSstudF3}, System.Windows.Forms.BindingMemberInfo newDisplayMember, bool force = true) + 0x1f0 bytes    
    System.Windows.Forms.dll!System.Windows.Forms.ListControl.DataSourceInitialized(object sender, System.EventArgs e) + 0x1b bytes    
    [Native to Managed Transition]    
    [Managed to Native Transition]    
    System.Data.dll!System.Data.DataSet.OnInitialized() + 0x29 bytes    
    System.Data.dll!System.Data.DataSet.EndInit() + 0xa7 bytes    
    Child.exe!Child.AnketForm.InitializeComponent() Line 2761


Вывод: лучше не биндиться через relation-ы smile

Добавлено @ 13:27 
Вариант:

не биндить взаимосвязанные комбобоксы в дизайнере, а делать это руками в Form_Load (используя тот же код), но в таком порядке: сначала parent-ы, потом child-ы. Тогда не будет свистопляски с многократным рекурсивным обходом всех child-ов как в текущей реализации.


--------------------
user posted image
PM MAIL WWW   Вверх
maxnoskov
Дата 13.9.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



OK. Спасибо, буду пробывать

Цитата(mr.DUDA @  13.9.2006,  13:16 Найти цитируемый пост)
не биндить взаимосвязанные комбобоксы в дизайнере, а делать это руками в Form_Load (используя тот же код), но в таком порядке: сначала parent-ы, потом child-ы. Тогда не будет свистопляски с многократным рекурсивным обходом всех child-ов как в текущей реализации. 


Но самое интересное, что если я оставляю комбобоксы как есть, а меняю только текстбоксы и чекбоксы все работает довольно быстро

Это сообщение отредактировал(а) maxnoskov - 13.9.2006, 15:59
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.