Selam bu yazıda ,forumda sorulan sorulardan anladığım kadarıyla,biraz karmaşık bir nesne gibi görünen bindingsource nesnesinden ve sınıfından bahsedeceğim,ve umarım bu yazıdan sonra bindingsource sınıfı ile ilgili akıllarda soru kalmayacaktır.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
"""'BindingSource' aslında ADO.NET'in bir üyesi ,yada bir parçası DEĞİLDİR, 'BindingSource ' , windows.form sınıfına aittir,
Bu yeni BindingSource,ADO.NET 2.0 ve sonrası sürümlerde mevcuttur,(Microsoft ADO:.net 2.0 isimli kitaptan)"""
BindingSource ,diğer view tiplerine yani(currency manager,bindingcontext ve view lara) benzemesine rağmen,onların bütün özelliklerini kapsamakla kalmayıp daha fazlasını yapabilen bir veri bağlama türüdür.
Bindingsource,kullandığı kaynağı ,kendi listesi(list) olarak görür ve bu "list"teki,navigasyonlara(ileri,geri,enson,ilk) ...gibi ve tüm
diğer row değişikliklerine ve listenin satır seçimlerine veya aktif hale gelmesine karşı duyarlıdır.
BindingSource "construction" methotları():
a-)--------------------------------------------------------------
dim bs as BindingSource
bs=new BindingSource
Şeklinde oluşturulup kaynak tanımlanabilir;(Örneğin bir dataset'i kaynak gösterelim)
bs.datasource=DataSet
bs.datamember="Tablo"
b-)-----BindingSource için kısa bir construct yöntemide şudur;
dim bs as new bindingsource(Dataset,"Tablo")'Tek satırda bitirdik.
BindingSource "Current" Methodu:
------------------------------------------------------------------
BindingSource' un current methodu; Üzerinde bulunulan mevcut satırı işaret eder,yani dahada açıklamak gerekirse,
o an ,hangi datarow aktifse,yada kendine liste olarak seçtiği kaynağın hangi satırı seçiliyse o satırı anlatır. Ör:
diyelimki bir gridviewı bir bindingsource a bağladık . 'gridview1.datasource=bs' dedik mesela, üzerinede tıklayıp bir satırı seçili hale getirdik, işte bu satırdaki dütun bilgilerini bindingsource ile kolaylıkla alabiliriz.
bs.current("sütun adı")------------bize hangi sütunu yazdıysak onun değerini döndürür.
sütunların indexlerini biliyorsak yani tablodaki sıralarını, indexleride kullanabiliriz:
bs.current(3)---gibi
BindingSource "Count" Methodu:
------------------------------------------------
bs.count------Bize tablodaki satır sayısını döndürür.(tabi bindingsourceumuz altta anlatılacağı gibi filtrelenmemişse, eğer filtrelenirse filtrelenmiş olan sayıyı döndürür ki dehşet güzel bir olaydır.)
BindingSource "AddNew" Methodu:
------------------------------------------------
Bu yöntem yeni bir satır eklemek için kullanılır;
bs.AddNew-----düzenlemeye hazır yeni bir satır.(satır henüz dataset üzerinde değildir)
BindingSource "EndEdit" Methodu:
------------------------------------------------
Bu yöntem,bindingsource un listesinde yapılan değişikliklerin dataset'e iletilip dataset bazında kaydedilmesini sağlar,satırla işimiz bittiğinde endedit kullanmak gerekir,
BindingSource "Filter" Methodu:
------------------------------------------------
Adındanda anlaşılabileceği gibi filtreleme yapar,
bs.filter="sütun1='ahmet' and sütun2=123"....gibi
BindingSource "Find" Methodu:
------------------------------------------------
Bu yöntemde ,arama ,bulma işlemlerini yapar,yapar ancak, Dikkat geriye dönen değer aradığımız değerin kendisi değil aradığımız bilginin bulunduğu satırın satır numarasıdır!!(integer tipinde bir değerdir)
bs.find("sütun adı",değer)--şeklinde kullanılır
ee şimdi geriye dönen değer satır numarasıysa ne işe yarayacak'' aşağıda 'index ' kullanımında ve "position" isimli yöntemlerde iki ayrı usulde bu satır numarasını bulmak anlatılmış olacak.
BindingSource 'ta Navigasyon(Gezinme işlemleri)
------------------------------------------------
(burada daha önce anlattığımız 'current' methodu geçerlidir,navigasyondan sonra artık 'currentımız' değişmiş olacaktır)bs.movefirst----ilk kayıta gider
bs.movelast----son kayıta gider
bs.movenext---bir sonraki satır
bs.moveprevious--bir önceki satır
BindingSource "Position" yöntemi
------------------------------------------------
posiziton yöntemi hem 'get' hemde 'set' özelliklidir yani bindingsource u istediğimiz satıra gönderebilir(Dikkat 'current methodu yine geçerli'), hemde bulunduğu satırı öğrenebiliriz,(integer tipinde bir değer döndürür)
bs.position=3---3.Satıra gider
dim a as integer=bs.position-----a değeri 3 olarak bize bulunduğu satır indexini döndürür.
----yukarıda bahsedilmiş olan find methodu işte burada işe yaramaktadır,nasılmı;
bs.position=bs.find("sütun adı",değer)----şeklinde kullanıldığı zaman artık current methoduyla bulmuş olduğumuz satırdan sadece aradığımız sütun değerlerini değil diğer tüm sütunlarında o satırdaki değerlerini alabiliriz
BindingSource'ta index kullanımı:
------------------------------------------------
bs(4)("yaşı")--bu örnek bize 4.satırdaki 'yaşı' isimli sütunun değerini döndürür.
yine yukarıda bahsetmiş olduğumuz find methodunun kullanım alanlarından biride burada ortaya çıkar:
Ör:dim a as string=bs(bs.find("sütun adı",değer)).tostring --bu ifade istediğimiz ifadeyi arayıp ,bize döndüren tek satırlık bir ifadedir .
BindingSource "RemoveCurrent" Yöntemi:
------------------------------------------------
buradada üzerinde bulunulan mevcut satırı silebiliyoruz(Bellekten)
BindingSource "RemoveFilter" Yöntemi:
------------------------------------------------
Daha önce "Filter" yöntemi ile filtrelemiş olduğumuz kayıttan tüm filtreleri temizleyip listesini orijinal hale döndürür.
BindingSource "Sort" ve "RemoveSort" Yöntemleri:
------------------------------------------------
sort sıralama yapar ve removesort bu sıralamyı iptal eder:
bs.sort="sütunadı desc"---sıralamış olduk örneğin.
bs.removesort---güle güle sıralama.
--evet bir çok yöntem anlattık bunlar en sık kullanılan yöntemlerdi ama daha bir çok yöntemi var incelemek ve çalışmak sizlere kalmış,
(Giriş tanıtım cümlesi hariç kendi yorumumdur ve incelemelerim kaynaklıdır