Обновление набора данных, когда связанный элемент управления изменяет значение - PullRequest
1 голос
/ 02 сентября 2011

Я привязываю свой контроль к набору данных следующим образом:

txt.DataBindings.Add("Text", ds, true, DataSourceUpdateMode.OnPropertyChanged);

Затем я добавляю прослушиватели для таких изменений

private void attatchChangeListeners(DataSet ds)
        {
            foreach (DataTable dt in ds.Tables)
            {
                dt.RowChanged += new DataRowChangeEventHandler(dt_RowChanged);
                dt.RowDeleted += new DataRowChangeEventHandler(dt_RowDeleted);
                dt.TableNewRow += new DataTableNewRowEventHandler(dt_TableNewRow);
            }

        }

        void dt_TableNewRow(object sender, DataTableNewRowEventArgs e)
        {
            if (!View.Dirty)
            {
                View.Dirty = true;
            }
        }

        void dt_RowDeleted(object sender, DataRowChangeEventArgs e)
        {
            if (!View.Dirty)
            {
                View.Dirty = true;
            }
        }

        void dt_RowChanged(object sender, DataRowChangeEventArgs e)
        {
            if (!View.Dirty)
            {
                View.Dirty = true;
            }
        }

Но когда я изменяю значение в текстовом поле в форме, я делаюне получить события.

Мне нужно вызвать endEdit во всех строках для запуска событий.

Я неправильно понял привязку данных или я что-то не так делаю?

1 Ответ

1 голос
/ 02 сентября 2011

Да при «неправильно понято»: -).

Привязка данных может рассматриваться как промежуточный уровень между объектами пользовательского интерфейса и DataSouce (обычно DataTable в DataSet).Чтобы изменения в пользовательском интерфейсе вступили в силу в базовом источнике данных, вам нужно вызвать EndEdit BindingSource.Аналогичным образом, если вы решите НЕ делать этого, вы всегда можете отменить изменения, используя «CancelEdit» (то есть, если вы хотите отменить изменения, сделанные пользовательским интерфейсом, чтобы вернуть значения вашего DataSource).Возможно, вы захотите подключить CurrentItemChanged Event BindingSource в соответствии с вашими требованиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...