Привязка данных нарушает функциональность DataRow.RowState - PullRequest
0 голосов
/ 08 марта 2011

Когда я создаю новый набор данных из кода или извлекаю его через адаптер данных из базы данных, изменение содержимого строки приводит к изменению состояния строки.Это поведение по умолчанию, и все работает правильно:

DataSet ds = new DataSet();
DataTable table = new DataTable("Cities");
table.Columns.Add("CityName", typeof(string));
table.Columns.Add("CountryName", typeof(string));
ds.Tables.Add(table);

table.Rows.Add("New York", "USA"); // state is Added for row 0
table.Rows.Add("London", "UK"); // state is Added for row 1

table.AcceptChanges(); // state is Unchanged for both rows

table.Rows[0][1] = "Seattle"; // state is Modified for row 0

Когда я получаю набор данных из базы данных, затем отправляю его через wcf (да, я знаю, что это плохая практика, но это другая история, я используюстандартное поведение) и получить его на прокси, его datarow все еще "осведомлены о состоянии".Строки данных по-прежнему реагируют на изменения своих значений.

Редактировать: После дальнейшей отладки проблемы я обнаружил, что набор данных правильно десериализован и отражает изменения в клиенте wcf (состояние строки соответствует модификациизначение ячейки).Возможность отражения изменений, похоже, теряется после того, как каждая из DataTable привязана (привязка Windows Forms, размещенная в WPF) к объекту электронной таблицы FarPoint:

sheet = new SheetView("Sample");
DataTable table = obtainedDataSet.Tables[0]; // RowState is correct
sheet.DataSource = table; // from now on, RowState is "corrupt"

Таким образом, с точки зрения привязки таблиц набора данных кв объекте FarPoint Spread Sheet строки «неосведомлены о состоянии».Я могу изменить их содержимое или явно вызвать SetModified, но ни одно из действий не меняет свое состояние строки на измененное:

obtainedDataSet.Tables[0].Rows[0][1] = "Seattle"; // state is Unchanged
obtainedDataSet.Tabels[0].SetModified(); // state is Unchanged

Теперь есть какая-то возможность убедить набор данных в том, что он будет мудрым, и начать отражать его изменения, или мне нужноРассмотреть другой подход?Кто-нибудь понял, что может быть не так (привязка себя или компонента FarPoint, неправильный шаблон)?

Ответы [ 3 ]

1 голос
/ 08 марта 2011

Попробуйте метод EndEdit () в объекте DataTable или DataRow перед вызовом DataAdapter.Update ()

0 голосов
/ 24 октября 2013

Я столкнулся с подобной ситуацией в одной форме, и я понял, что проблема была в привязке к меткам ToolTip свойство . Сначала я понял, что когда я изменил значение для null с null на какую-то строку, проблема исчезла, но после некоторых других изменений, внесенных в проект, проблема снова возникла . Когда я удалил привязку к свойству ToolTip , проблема снова исчезла. Тем не менее, я не знаю, навсегда.

0 голосов
/ 09 марта 2011

Ну, похоже, проблема была в элементе управления FarPoint Spread.Версия 5.0 нарушила функциональность, и ребята из GrapeCity исправили ошибку в версии 5.0.3518, которая теперь отлично работает.

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