Как обеспечить все изменения в каждом элементе управления, примененном к DataSet, перед сохранением данных в базе данных? - PullRequest
0 голосов
/ 19 июля 2009

Когда я разрабатываю с использованием Delphi, я всегда вызываю DataSet.CheckBrowseMode (), чтобы позволить связанным элементам управления применить ожидающие изменения к DataSet. Я искал подобный путь в .NET

Я пробовал

// When the user press Ctrl-S 
// Apply any pending edit
this.TheDataBindingSource.CurrencyManager.EndCurrentEdit();
// then save the data
this.SaveData();

В отличие от Delphi DataSet.CheckBrowseMode (), этот код не оказывает никакого влияния, если в TextBox имеются ожидающие изменения. Мой пользователь должен отодвинуть фокус от текстового поля с помощью <"TAB">, прежде чем нажать Ctrl-S, чтобы сохранить данные.

Ответы [ 2 ]

2 голосов
/ 19 июля 2009

Согласно MSDN , если вы подтвердите форму, все элементы управления отправят свои текущие данные обратно в источник данных.

// When the user press Ctrl-S 
// Apply any pending edit
this.Validate();  // assuming this is the Form...
// set the DataSource of the BindingSource to null,
// otherwise, the BindingSource immediately calls
// BeginEdit() automatically
this.TheDataBindingSource.DataSource = null;
this.TheDataBindingSource.EndEdit();
// then save the data
this.SaveData();
1 голос
/ 19 июля 2009
this.BindingContext[dataTableVariableHere].EndCurrentEdit();

или если вы используете BindingSource для привязки данных к вашим элементам управления:

foreach(Component c in this.components.Components)
    if(c is BindingSource)
        (c as BindingSource).EndEdit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...