Глюк в том, что при нажатии на кнопку кантролы продолжают отображать старое содержимое.Смена позиции в таблице вручную не помогает. Если прикрутить к таблице dataGrid, в нем все выглядит так: новая строка добавляется, но указатель остается на текущей записи.
Бьюсь весь день, уже с нуля написал приложение с такой же фигней — там ВСЕ РАБОТАЕТ. Но мне нужно сделать в этом.
Народ, если кто сталкивался с этой проблемой или похожей подскажите плиз в чем тут может быть дело.
Здравствуйте, 4wd, Вы писали:
4wd>Есть DataTable (называется fPersonFull). Есть набор кантролов на форме, которые динамически привязываются к этой таблице, например так: 4wd>
4wd>Глюк в том, что при нажатии на кнопку кантролы продолжают отображать старое содержимое.Смена позиции в таблице вручную не помогает. Если прикрутить к таблице dataGrid, в нем все выглядит так: новая строка добавляется, но указатель остается на текущей записи. 4wd>Бьюсь весь день, уже с нуля написал приложение с такой же фигней — там ВСЕ РАБОТАЕТ. Но мне нужно сделать в этом. 4wd>Народ, если кто сталкивался с этой проблемой или похожей подскажите плиз в чем тут может быть дело.
убедись, что все контролы используют один и тот же BindingContext.
а в гриде ничего не видишь потому что он к другому CurrencyManager`у прибинден — небось задавал биндинг с помощью DataSource и DataMember? поставь DataSource = fPersonFull.
Здравствуйте, andreich78, Вы писали:
A>убедись, что все контролы используют один и тот же BindingContext.
как в этом убедиться. Все контролы созданы вместе с формой, только Bindings у них периодически clear и add. Они что каждый раз в новом контексте привязываются?
Пробовал им вручную назначать BindingContext формы — вообще ни хрена не отображается. A>а в гриде ничего не видишь потому что он к другому CurrencyManager`у прибинден — небось задавал биндинг с помощью DataSource и DataMember? поставь DataSource = fPersonFull.
Оно так и стоит DataSource = fPersonFull и тоже периодически обновляется. Дело в том, что там нельзя один раз прибиндить и забыть — fPersonFull каждый раз новая таблица.
Здравствуйте, 4wd, Вы писали:
4wd>Здравствуйте, andreich78, Вы писали:
A>>убедись, что все контролы используют один и тот же BindingContext. 4wd>как в этом убедиться. Все контролы созданы вместе с формой, только Bindings у них периодически clear и add. Они что каждый раз в новом контексте привязываются? 4wd>Пробовал им вручную назначать BindingContext формы — вообще ни хрена не отображается. A>>а в гриде ничего не видишь потому что он к другому CurrencyManager`у прибинден — небось задавал биндинг с помощью DataSource и DataMember? поставь DataSource = fPersonFull. 4wd>Оно так и стоит DataSource = fPersonFull и тоже периодически обновляется. Дело в том, что там нельзя один раз прибиндить и забыть — fPersonFull каждый раз новая таблица.
...понятно, что ничё не понятно...
посмотри на экземпляр биндинга какого-нить контрола в момент после EndCurrentEdit. убедись, что его BindingManagerBase совпадает с this.BindingContext[fPersonFull]
посмотри на dataGrid.BindingContext[dataGrid.DataSource,dataGrid.DataMember], сравни его с this.BindingContext[fPersonFull]
если всё совпадает — тогда вообще не понятно.
и опиши алгоритм привязывания биндингов.
Здравствуйте, andreich78, Вы писали:
A>...понятно, что ничё не понятно... A>посмотри на экземпляр биндинга какого-нить контрола в момент после EndCurrentEdit. убедись, что его BindingManagerBase совпадает с this.BindingContext[fPersonFull] A>посмотри на dataGrid.BindingContext[dataGrid.DataSource,dataGrid.DataMember], сравни его с this.BindingContext[fPersonFull] A>если всё совпадает — тогда вообще не понятно. A>и опиши алгоритм привязывания биндингов.
Получил что все равны.
А что до алгоритма привязывания биндингов...
При запросе пользователя таблица fPersonFull получается через сеть. Там одна запись. После чего всем контролам на форме очищается DataBinding и назначается снова из таблицы fPersonFull:
По нажатию на кнопку "Новая запись" вызывается то что написал в самом начале этого сообщения. При этом в грид добавляется строка, из (null)-значений. Все замечательно. Только курсор остается на прежнем месте. И в контролах соответственно отображается старая запись.