Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
140
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Чтобы приостановить ограничения на обновление с помощью конструктора наборов данных

  1. Откройте набор данных в Конструктор наборов данных. Дополнительные сведения см. в разделеПрактическое руководство. Открытие набора данных в конструкторе наборов данных.

  2. Присвойте свойству EnforceConstraintsзначение false в окне Свойства.

Сведения об ошибке строки

Чтобы не отвечать на ошибки строки при изменении значений в таблице DataTable, можно добавить сведения об ошибке в строку для последующего использования. Для этой цели объектDataRowпредоставляет свойствоRowErrorдля каждой строки. При добавлении данных в свойствоRowErrorобъектаDataRowсвойствоHasErrorsобъектаDataRowустанавливается в значениеtrue. Если объектDataRowявляется частью таблицыDataTable, а свойствоDataRow.HasErrorsимеет значениеtrue, то свойствоDataTable.HasErrorsтакже имеет значениеtrue. Это касается также набораDataSet, к которому принадлежит таблицаDataTable. Чтобы выявить, были ли добавлены сведения об ошибке в какую-нибудь из строк, можно проверить свойствоHasErrors. Если свойствоHasErrorsимеет значениеtrue, то можно использовать методGetErrorsобъектаDataTableдля возврата и изучения только тех строк, которые содержат ошибки, как показано в следующем примере.

Язык C#

DataTable workTable = new DataTable("Customers");

workTable.Columns.Add("CustID", typeof(Int32));

workTable.Columns.Add("Total", typeof(Double));

workTable.RowChanged += new DataRowChangeEventHandler(OnRowChanged);

for (int i = 0; i < 10; i++)

workTable.Rows.Add(new Object[] {i, i*100});

if (workTable.HasErrors)

{

Console.WriteLine("Errors in Table " + workTable.TableName);

foreach (DataRow myRow in workTable.GetErrors())

{

Console.WriteLine("CustID = " + myRow["CustID"]);

Console.WriteLine(" Error = " + myRow.RowError + "\n");

}

}

protected static void OnRowChanged(

Object sender, DataRowChangeEventArgs args)

{

// Check for zero values.

if (args.Row["Total"].Equals(0D))

args.Row.RowError = "Total cannot be 0.";

}

Получение измененных строк (Практическое руководство).

Каждая строка в таблице данных имеет свойство RowState, которое отслеживает текущее состояние этой строки, используя значения из перечисленияDataRowState. Вы можете вернуть измененные строки из набора данных или таблицы данных, вызвав методGetChangesобъектаDataSetилиDataTable. Можно убедиться, что изменения существуют, до вызоваGetChanges, вызвав методHasChangesнабора данных. Дополнительные сведения поHasChangesсм. в разделеПрактическое руководство. Проверка измененных строк.

Примечание.

После фиксации изменений в наборе данных или таблице данных (путем вызова метода AcceptChanges), методGetChangesне вернет данные. Если приложению нужно обработать измененные строки, необходимо сделать это до вызова методаAcceptChanges.

Вызов метода GetChangesнабора данных или таблицы данных возвращает новый набор данных или таблицу данных, содержащие только записи, которые были изменены. Если требуется получить только определенные записи — например, только новые записи или только измененные записи — можно передать значение из перечисленияDataRowStateв качестве параметра методуGetChanges.

Используйте перечисление DataRowVersionдля доступа к другой версии строки (например, возможно, потребуется проверить исходные значения в строке до ее обработки).