Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DataTable nesnesi, bir uygulama tarafından işlenebilen bir dizi olay sağlar. Aşağıdaki tabloda DataTable olayları açıklanmaktadır.
| Etkinlik | Açıklama |
|---|---|
| Initialized | Bir EndInit'de DataTable yöntemi çağrıldıktan sonra oluşur. Bu olay öncelikli olarak tasarım zamanı senaryolarını desteklemeye yöneliktir. |
| ColumnChanged | Başarıyla bir değer değiştirildiğinde DataColumn'da meydana gelir. |
| ColumnChanging |
DataColumniçin bir değer gönderildiğinde gerçekleşir. |
| RowChanged |
DataColumn değerinden sonra veya RowState içindeki bir DataRow'nin DataTable'i başarıyla değiştirildikten sonra gerçekleşir. |
| RowChanging |
DataColumn'te bir RowState'nin DataRow'i veya bir DataTable değeri için bir değişiklik gönderildiğinde gerçekleşir. |
| RowDeleted |
DataRow, DataTable içinde Deletedolarak işaretlendikten sonra gerçekleşir. |
| RowDeleting |
DataRow'in DataTable'de Deletedolarak işaretlenmesinden önce meydana gelir. |
| TableCleared |
Clear'in DataTable yöntemine yapılan çağrı, her bir DataRowbaşarıyla temizlendikten sonra gerçekleşir. |
| TableClearing |
Clear yöntemi çağrıldıktan sonra ancak Clear işlemi başlamadan önce gerçekleşir. |
| TableNewRow |
DataRow'nin NewRow yöntemine yapılan bir çağrı ile yeni bir DataTable oluşturulduktan sonra meydana gelir. |
| Disposed |
DataTable
Disposedolduğunda gerçekleşir.
MarshalByValueComponent öğesinden devralındı. |
Uyarı
Satır ekleyen veya silen işlemlerin çoğu, ColumnChanged ve ColumnChanging olaylarını tetiklemiyor. Ancak, ReadXmlColumnChanged olarak ayarlanmadığı veya okunan XML belgesi ColumnChangingolduğunda XmlReadMode olarak ayarlanmadığı sürece DiffGram yöntemi Auto ve DiffGram olayları tetikler.
Uyarı
DataSet olayının oluşturulduğu bir RowChanged içinde veriler değiştirildiğinde veri bozulması meydana gelebilir. Bu tür veri bozulması oluşursa hiçbir özel durum tetiklenmez.
ek ilgili olaylar
Constraints özelliği bir ConstraintCollection örneği barındırıyor.
ConstraintCollection sınıfı bir CollectionChanged olayı tanımlar. Bu olay, bir kısıtlama ConstraintCollection'e eklendiğinde, değiştirildiğinde ya da kaldırıldığında tetiklenir.
Columns özelliği bir DataColumnCollection örneği barındırıyor.
DataColumnCollection sınıfı bir CollectionChanged olayı tanımlar. Bu olay, DataColumn'e bir DataColumnCollection eklendiğinde, değiştirildiğinde veya kaldırıldığında tetiklenir. Olayın tetiklenmesine neden olan değişiklikler, bir sütunun adında, türünde, ifadesinde veya sıralama pozisyonunda yapılan değişiklikleri içerir.
Tables'in DataSet özelliği bir DataTableCollection örneğini barındırıyor.
DataTableCollection sınıfı hem CollectionChanged hem de CollectionChanging olayını kullanıma sunar. Bu olaylar, bir DataTableDataSet'e eklendiğinde veya DataSet'den kaldırıldığında tetiklenir.
DataRows değişiklikleri, ilişkili bir DataViewiçin olayları da tetikleyebilir.
DataView sınıfı, bir ListChanged değeri değiştiğinde veya görünümün oluşturma veya sıralama düzeni değiştiğinde tetikleyen bir DataColumn olayı kullanıma sunar.
DataRowView sınıfı, ilişkili bir PropertyChanged değeri değiştiğinde tetiklenen bir DataColumn olayı kullanıma sunar.
İşlem Sırası
bir DataRow eklendiğinde, değiştirildiğinde veya silindiğinde gerçekleşen işlemlerin sırası aşağıdadır:
Önerilen kaydı oluşturun ve değişiklikleri uygulayın.
İfade olmayan sütunlar için kısıtlamaları denetleyin.
RowChangingveyaRowDeletingolaylarını uygun şekilde yükseltin.Önerilen kaydı geçerli kayıt olarak ayarlayın.
İlişkili dizinleri güncelleştirin.
İlişkili
ListChangednesneler içinDataViewolayları ve ilişkiliPropertyChangednesneler içinDataRowViewolayları tetikler.Tüm ifade sütunlarını değerlendirin, ancak bu sütunlardaki kısıtlamaları denetlemeyi geciktirin.
İfade sütunu değerlendirmelerinden etkilenen ilişkili
ListChangednesneler içinDataViewolayları ve ilişkiliPropertyChangednesneler içinDataRowViewolayları tetikler.RowChangedveyaRowDeletedolayları uygun şekilde yükseltin.İfade sütunlarında kısıtlamaları denetleyin.
Uyarı
İfade sütunlarına yapılan değişiklikler hiçbir zaman DataTable olayını tetiklemez. İfade sütunlarındaki değişiklikler yalnızca DataView ve DataRowView olaylarını tetikler. İfade sütunlarının diğer birden çok sütuna bağımlılığı olabilir ve tek bir DataRow işlemi sırasında birden çok kez değerlendirilebilir. Her ifade değerlendirmesi olayları tetikler ve tek bir DataRow işlemi, ifade sütunları etkilendiğinde birden çok ListChanged ve PropertyChanged olay oluşturabilir ve muhtemelen aynı ifade sütunu için birden çok olay da dahil olabilir.
Uyarı
NullReferenceException olay işleyicisi içinde bir RowChanged fırlatmayın. Bir NullReferenceException'deki RowChanged olayı sırasında bir DataTable atılırsa, DataTable bozulur.
Örnek
Aşağıdaki örnek, RowChanged, RowChanging, RowDeleted, RowDeleting, ColumnChanged, ColumnChanging, TableNewRow, TableClearedve TableClearing olayları için olay işleyicilerinin nasıl oluşturulacağını gösterir. Her bir olay işleyicisi, çalıştırıldığında konsol penceresinde çıkışı görüntüler.
static void DataTableEvents()
{
DataTable table = new("Customers");
// Add two columns, id and name.
table.Columns.Add("id", typeof(int));
table.Columns.Add("name", typeof(string));
// Set the primary key.
table.Columns["id"].Unique = true;
table.PrimaryKey = [table.Columns["id"]];
// Add a RowChanged event handler.
table.RowChanged += Row_Changed;
// Add a RowChanging event handler.
table.RowChanging += Row_Changing;
// Add a RowDeleted event handler.
table.RowDeleted += Row_Deleted;
// Add a RowDeleting event handler.
table.RowDeleting += Row_Deleting;
// Add a ColumnChanged event handler.
table.ColumnChanged += Column_Changed;
// Add a ColumnChanging event handler.
table.ColumnChanging += Column_Changing;
// Add a TableNewRow event handler.
table.TableNewRow += Table_NewRow;
// Add a TableCleared event handler.
table.TableCleared += Table_Cleared;
// Add a TableClearing event handler.
table.TableClearing += Table_Clearing;
// Add a customer.
DataRow row = table.NewRow();
row["id"] = 1;
row["name"] = "Customer1";
table.Rows.Add(row);
table.AcceptChanges();
// Change the customer name.
table.Rows[0]["name"] = "ChangedCustomer1";
// Delete the row.
table.Rows[0].Delete();
// Clear the table.
table.Clear();
}
static void Row_Changed(object sender, DataRowChangeEventArgs e) =>
Console.WriteLine($"Row_Changed Event: name={e.Row["name"]}; action={e.Action}");
static void Row_Changing(object sender, DataRowChangeEventArgs e) =>
Console.WriteLine($"Row_Changing Event: name={e.Row["name"]}; action={e.Action}");
static void Row_Deleted(object sender, DataRowChangeEventArgs e) =>
Console.WriteLine($"Row_Deleted Event: name={e.Row["name", DataRowVersion.Original]}; action={e.Action}");
static void Row_Deleting(object sender,
DataRowChangeEventArgs e) =>
Console.WriteLine($"Row_Deleting Event: name={e.Row["name"]}; action={e.Action}");
static void Column_Changed(object sender, DataColumnChangeEventArgs e) =>
Console.WriteLine($"Column_Changed Event: ColumnName={e.Column.ColumnName}; RowState={e.Row.RowState}");
static void Column_Changing(object sender, DataColumnChangeEventArgs e) =>
Console.WriteLine($"Column_Changing Event: ColumnName={e.Column.ColumnName}; RowState={e.Row.RowState}");
static void Table_NewRow(object sender,
DataTableNewRowEventArgs e) =>
Console.WriteLine($"Table_NewRow Event: RowState={e.Row.RowState.ToString()}");
static void Table_Cleared(object sender, DataTableClearEventArgs e) =>
Console.WriteLine("Table_Cleared Event: TableName={0}; Rows={1}",
e.TableName, e.Table.Rows.Count.ToString());
static void Table_Clearing(object sender, DataTableClearEventArgs e) =>
Console.WriteLine("Table_Clearing Event: TableName={0}; Rows={1}",
e.TableName, e.Table.Rows.Count.ToString());
Private Sub DataTableEvents()
Dim table As New DataTable("Customers")
' Add two columns, id and name.
table.Columns.Add("id", Type.GetType("System.Int32"))
table.Columns.Add("name", Type.GetType("System.String"))
' Set the primary key.
table.Columns("id").Unique = True
table.PrimaryKey = New DataColumn() {table.Columns("id")}
' Add a RowChanged event handler.
AddHandler table.RowChanged, _
New DataRowChangeEventHandler(AddressOf Row_Changed)
' Add a RowChanging event handler.
AddHandler table.RowChanging, _
New DataRowChangeEventHandler(AddressOf Row_Changing)
' Add a RowDeleted event handler.
AddHandler table.RowDeleted, New _
DataRowChangeEventHandler(AddressOf Row_Deleted)
' Add a RowDeleting event handler.
AddHandler table.RowDeleting, New _
DataRowChangeEventHandler(AddressOf Row_Deleting)
' Add a ColumnChanged event handler.
AddHandler table.ColumnChanged, _
New DataColumnChangeEventHandler(AddressOf Column_Changed)
' Add a ColumnChanging event handler for the table.
AddHandler table.ColumnChanging, New _
DataColumnChangeEventHandler(AddressOf Column_Changing)
' Add a TableNewRow event handler.
AddHandler table.TableNewRow, New _
DataTableNewRowEventHandler(AddressOf Table_NewRow)
' Add a TableCleared event handler.
AddHandler table.TableCleared, New _
DataTableClearEventHandler(AddressOf Table_Cleared)
' Add a TableClearing event handler.
AddHandler table.TableClearing, New _
DataTableClearEventHandler(AddressOf Table_Clearing)
' Add a customer.
Dim row As DataRow = table.NewRow()
row("id") = 1
row("name") = "Customer1"
table.Rows.Add(row)
table.AcceptChanges()
' Change the customer name.
table.Rows(0).Item("name") = "ChangedCustomer1"
' Delete the row.
table.Rows(0).Delete()
' Clear the table.
table.Clear()
End Sub
Private Sub Row_Changed(ByVal sender As Object, _
ByVal e As DataRowChangeEventArgs)
Console.WriteLine("Row_Changed Event: name={0}; action={1}", _
e.Row("name"), e.Action)
End Sub
Private Sub Row_Changing(ByVal sender As Object, _
ByVal e As DataRowChangeEventArgs)
Console.WriteLine("Row_Changing Event: name={0}; action={1}", _
e.Row("name"), e.Action)
End Sub
Private Sub Row_Deleted(ByVal sender As Object, _
ByVal e As DataRowChangeEventArgs)
Console.WriteLine("Row_Deleted Event: name={0}; action={1}", _
e.Row("name", DataRowVersion.Original), e.Action)
End Sub
Private Sub Row_Deleting(ByVal sender As Object, _
ByVal e As DataRowChangeEventArgs)
Console.WriteLine("Row_Deleting Event: name={0}; action={1}", _
e.Row("name"), e.Action)
End Sub
Private Sub Column_Changed(ByVal sender As Object, _
ByVal e As DataColumnChangeEventArgs)
Console.WriteLine("Column_Changed Event: ColumnName={0}; RowState={1}", _
e.Column.ColumnName, e.Row.RowState)
End Sub
Private Sub Column_Changing(ByVal sender As Object, _
ByVal e As DataColumnChangeEventArgs)
Console.WriteLine("Column_Changing Event: ColumnName={0}; RowState={1}", _
e.Column.ColumnName, e.Row.RowState)
End Sub
Private Sub Table_NewRow(ByVal sender As Object, _
ByVal e As DataTableNewRowEventArgs)
Console.WriteLine("Table_NewRow Event: RowState={0}", _
e.Row.RowState.ToString())
End Sub
Private Sub Table_Cleared(ByVal sender As Object, _
ByVal e As DataTableClearEventArgs)
Console.WriteLine("Table_Cleared Event: TableName={0}; Rows={1}", _
e.TableName, e.Table.Rows.Count.ToString())
End Sub
Private Sub Table_Clearing(ByVal sender As Object, _
ByVal e As DataTableClearEventArgs)
Console.WriteLine("Table_Clearing Event: TableName={0}; Rows={1}", _
e.TableName, e.Table.Rows.Count.ToString())
End Sub
Ayrıca bkz.
- DataTable'da Verileri Manipüle Etme
- DataAdapter Olaylarını İşleme
- DataSet Olaylarını İşleme
- ADO.NET Genel Bakış