DataSet içerisinde birden fazla tablo olduğu zaman her tablo için ayrı ayrı DataView nesneleri oluşturup tablo verilerini sorgulamak yerine tüm tablolar için ortak bir sorgulama hazırlamak daha mantıklı olacaktır. Bu işlem için DataSet nesnesinin DataViewManager türünde değer döndüren DefaultViewManager özelliği kullanılır. DataViewManager nesnesi, DataView nesnelerinin bulunduğu koleksiyon için tek bir sorgulama nesnesi oluşturur.
DataViewManager nesnesi, DataSet içerisindeki DataTableCollection koleksiyonundaki tabloları, DataViewSetting denilen nesneler üzerinde sorgular. DataViewSetting nesnesini, her tablo için çalışan DataView nesnelerinin konfigürasyonu olarak düşünebiliriz. Bu nesne üzerinden her tablo için, Sort, RowFilter, RowStateFilter ayarları yapılır.

DataViewManager nesnesi daha çok ilişkili tablolar içeren DataSet yapılarının kullanıldığı windows uygulamalarında büyük kolaylık sağlar. Aşağıdaki şekil, DataSet ve DataViewManager ilişkisini göstermektedir.

DataViewManager nesnesinin önemli üyeleri şunlardır;
- DataSet:
- DataViewSettings:
- CreateDataView():
DataViewManager nesnesinin ilişkili olduğu DataSet nesnesini belirtir.
DataSet içinde her tablo için oluşturulmuş DataViewSettingCollection koleksiyonunu döndürür.
Belirlenmiş bir tablo için DataView nesnesi oluşturur.
Örnek olarak Musteri ve Siparis isminde iki tablo oluşturalım.

'DataSet nesnesi oluşturalım
Dim oDs As New DataSet()
'Musteri isminde tablo oluşturalım.
Dim oDt As New DataTable("Musteri")
'Musteri tablosunda MusteriId, AdSoyad kolonlarını oluşturalım.
Dim oDc As New DataColumn("MusteriId", System.Type.GetType("System.Int32"))
oDc.AutoIncrement = True
oDc.AutoIncrementSeed = 1
oDt.Columns.Add(oDc)
'2.Kolon (AdSoyad kolonu)
oDt.Columns.Add("AdSoyad", System.Type.GetType("System.String"))
'Tabloda iki kayıt girelim
Dim oDr As DataRow = oDt.NewRow()
oDr("AdSoyad") = "Ali Korkmaz"
oDt.Rows.Add(oDr)
'2.kayıt
oDr = oDt.NewRow()
oDr("AdSoyad") = "Ayşe Korkmaz"
oDt.Rows.Add(oDr)
'Musteri tablosunu DataSet içerisine ekleyelim.
oDs.Tables.Add(oDt)
'Siparis tablosunu oluşturalım
oDt = New DataTable("Siparis")
'Siparis tablosunda SiparisId,MusteriId,UrunId,Adet,Tarih kolonlarını oluşturalım.
oDc = New DataColumn("SiparisId", System.Type. GetType("System.Int32"))
oDc.AutoIncrement = True
oDc.AutoIncrementSeed = 1
oDt.Columns.Add(oDc)
oDt.Columns.Add("MusteriId", System.Type.GetType("System.Int32"))
oDt.Columns.Add("UrunId", System.Type.GetType("System.Int32"))
oDt.Columns.Add("Adet", System.Type.GetType("System.Int32"))
oDt.Columns.Add("Tarih", System.Type.GetType("System.DateTime"))
'Tarih kolonu için default değer tanımlayalım
oDt.Columns("Tarih").DefaultValue = DateTime.Now
'Siparis tablosuna kayıtlar girelim
oDr = oDt.NewRow()
oDr("MusteriId") = 1 'Ali Korkmaz
oDr("UrunId") = 10 '10 numaralı ürün
oDr("Adet") = 2
oDr("Tarih") = "01/01/2007"
oDt.Rows.Add(oDr)
oDr = oDt.NewRow()
oDr("MusteriId") = 1 'Ali Korkmaz
oDr("UrunId") = 12 '12 numaralı ürün
oDr("Adet") = 3
oDr("Tarih") = "01/01/2007"
oDt.Rows.Add(oDr)
oDr = oDt.NewRow()
oDr("MusteriId") = 2 'Ayşe Korkmaz
oDr("UrunId") = 10 '10 numaralı ürün
oDr("Adet") = 1
oDt.Rows.Add(oDr)
'Siparis tablosunu DataSet içerisine ekleyelim.
oDs.Tables.Add(oDt)
//DataSet nesnesi oluşturalım
DataSet oDs = new DataSet();
//Musteri isminde tablo oluşturalım.
DataTable oDt = new DataTable("Musteri");
//Musteri tablosunda MusteriId, AdSoyad kolonlarını oluşturalım.
DataColumn oDc = new DataColumn("MusteriId", System.Type.GetType("System.Int32"));
oDc.AutoIncrement = true;
oDc.AutoIncrementSeed = 1;
oDt.Columns.Add(oDc);
//2.Kolon (AdSoyad kolonu)
oDt.Columns.Add("AdSoyad", System.Type.GetType("System.String"));
//Tabloda iki kayıt girelim
DataRow oDr = oDt.NewRow();
oDr["AdSoyad"] = "Ali Korkmaz";
oDt.Rows.Add(oDr);
//2.kayıt
oDr = oDt.NewRow();
oDr["AdSoyad"] = "Ayşe Korkmaz";
oDt.Rows.Add(oDr);
//Musteri tablosunu DataSet içerisine ekleyelim.
oDs.Tables.Add(oDt);
//Siparis tablosunu oluşturalım
oDt = new DataTable("Siparis");
//Siparis tablosunda SiparisId,MusteriId,UrunId,Adet,Tarih kolonlarını oluşturalım.
oDc = new DataColumn("SiparisId", System.Type.GetType("System.Int32"));
oDc.AutoIncrement = true;
oDc.AutoIncrementSeed = 1;
oDt.Columns.Add(oDc);
oDt.Columns.Add("MusteriId", System.Type.GetType("System.Int32"));
oDt.Columns.Add("UrunId", System.Type.GetType("System.Int32"));
oDt.Columns.Add("Adet", System.Type.GetType("System.Int32"));
oDt.Columns.Add("Tarih", System.Type.GetType("System.DateTime"));
//Tarih kolonu için default değer tanımlayalım
oDt.Columns["Tarih"].DefaultValue = DateTime.Now;
//Siparis tablosuna kayıtlar girelim
oDr = oDt.NewRow();
oDr["MusteriId"] = 1; //Ali Korkmaz
oDr["UrunId"] = 10; //10 numaralı ürün
oDr["Adet"] = 2;
oDr["Tarih"] = "01/01/2007";
oDt.Rows.Add(oDr);
oDr = oDt.NewRow();
oDr["MusteriId"] = 1; //Ali Korkmaz
oDr["UrunId"] = 12; //12 numaralı ürün
oDr["Adet"] = 3;
oDr["Tarih"] = "01/01/2007";
oDt.Rows.Add(oDr);
oDr = oDt.NewRow();
oDr["MusteriId"] = 2; //Ayşe Korkmaz
oDr["UrunId"] = 10; //10 numaralı ürün
oDr["Adet"] = 1;
oDt.Rows.Add(oDr);
//Siparis tablosunu DataSet içerisine ekleyelim.
oDs.Tables.Add(oDt);
DataViewManager nesnesini kullanarak her tablo için ayrı veya ortak ayarlar belirleyelim.
'Her tablo için DataView özelliklerini belirleyelim
'Bunun için DataViewManager nesnesi oluşturulur
Dim oDvm As New DataViewManager(oDs)
'DataViewSettings koleksiyonunu döngüye alıp
'her tablo için Sort ve RowFilter kriterlerini belirleyelim
Dim oTbName As String = ""
For Each oDvs As DataViewSetting In oDvm.DataViewSettings
'Default sıralama özelliğini belirleyelim
'Bütün tablolar için sıralama Birincil anahtar üzerinden yapılacak.
oDvs.ApplyDefaultSort = True
'Her tabloya özgü Sort ve RowFilter belirleyelim
oTbName = oDvs.Table.ToString()
If oTbName = "Musteri" Then
oDvs.Sort = "AdSoyad DESC"
End If
'Veya tek satırda tanımlama yapabiliriz.
'oDvm.DataViewSettings("Musteri").Sort = "AdSoyad DESC"
If oTbName = "Siparis" Then
oDvs.RowFilter = "Tarih='01.01.2007'"
End If
Next
'DataViewManager nesnesinin, tablolara uyguladığı seçenekler
Console.WriteLine(oDvm.DataViewSettingCollectionString)
//Her tablo için DataView özelliklerini belirleyelim
//Bunun için DataViewManager nesnesi oluşturulur
DataViewManager oDvm = new DataViewManager(oDs);
//DataViewSettings koleksiyonunu döngüye alıp
//her tablo için Sort ve RowFilter kriterlerini belirleyelim
string oTbName="";
foreach (DataViewSetting oDvs in oDvm.DataViewSettings) {
//Default sıralama özelliğini belirleyelim
//Bütün tablolar için sıralama Birincil anahtar üzerinden yapılacak.
oDvs.ApplyDefaultSort = true;
//Her tabloya özgü Sort ve RowFilter belirleyelim
oTbName = oDvs.Table.ToString();
if (oTbName == "Musteri") {
oDvs.Sort = "AdSoyad DESC";
}
//Veya tek satırda tanımlama yapabiliriz.
//oDvm.DataViewSettings["Musteri"].Sort = "AdSoyad DESC";
if (oTbName == "Siparis") {
oDvs.RowFilter = "Tarih='01.01.2007'";
}
}//foreach
//DataViewManager nesnesinin, tablolara uyguladığı seçenekler
Console.WriteLine(oDvm.DataViewSettingCollectionString);
RowFilter=""
RowStateFilter="CurrentRows"/>
RowFilter="Tarih='01.01.2007'"
RowStateFilter="CurrentRows"/>
DataViewManager nesnesi üzerinden tanımlanmış ayarlar doğrultusunda Siparis tablosunun kayıtlarını listeleyelim. SettingCollectionString değerinden de görüleceği gibi Siparis tablosunda sadece Tarih alanı, “01.01.2007¨ olan kayıtlar listelenecektir.
'Siparis tablosu için DataView oluşturalım.
'Bu işlemi oDvm üzerinden yaptığımız için yukarıdaki RowFilter, Sort işlemlerini tabloya uyguladıktan sonra tablodan view oluşturur.
Dim tbSiparis As DataTable = oDs.Tables("Siparis")
Dim oSDv As DataView = oDvm.CreateDataView(tbSiparis)
'View'deki satırları listeyelim
For Each oDrv As DataRowView In oSDv
For i As Integer = 0 To oSDv.Table.Columns.Count - 1
Console.WriteLine(oSDv.Table.Columns(i).ColumnName _
& ": " & oDrv(i))
Next
Console.WriteLine()
Next
//Siparis tablosu için DataView oluşturalım.
//Bu işlemi oDvm üzerinden yaptığımız için yukarıdaki RowFilter, Sort işlemlerini tabloya uyguladıktan sonra tablodan view oluşturur.
DataTable tbSiparis = oDs.Tables[“Siparis”];
DataView oSDv = oDvm.CreateDataView(tbSiparis);
//View’deki satırları listeyelim
foreach (DataRowView oDrv in oSDv) {
for (int i = 0; i
SiparisId: 1
MusteriId: 1
UrunId: 10
Adet: 2
Tarih: 01.01.2007 00:00:00
SiparisId: 2
MusteriId: 1
UrunId: 12
Adet: 3
Tarih: 01.01.2007 00:00:00