Bu örneğimizde bir adres bilgisi yazıyoruz ve gridin bir hücresinde ülkeler lookupedit'i var diğer hücrede ise şehirler için bir lookupedit var. Eğer inplace edit işlemi kullanıyor isek ülkeler lookupedit'in EditValueChanged özelliğinde şehirler lookupedit'inin datasource'unu null olarak atarız. Kullanıcı şehirler sütununa focus olduğu sırada gridview'ın ShownEditor methodu devreye girer ve bu method içinde seçilmiş ülke bilgisine göre şehir bilgisini datasource olarak buradaki lookupedit'imize atarız. Ancak EditMode özelliğimiz EditForm olarak atanmış ise ShownEditor veya grid sütununa atanmış columnedit'in EditValueChanged methodları tetiklenmez.. Bu durumu çözebilmek için EditFormPrepared olayında bir lookupedit'lere kendimiz method ekleyeceğiz. Burada methodlar daha önceden eklenmişse diye önce methodu -= ile kaldırıp sonra += ile ekliyoruz.
Aslında işlem normal inplaceden çok faklı değil. Sadece ilgili editorlerin olaylarını EditForm hazırlanırken ekliyoruz. |
EditFormPrepared methodunda ülke sütununa ait olan edit objesini _countryLookUp objemize atıyoruz,
şehirler sütununa ait olan lookupedit objesini ise _cityLookUp objesine atıyoruz. Eğer atama başarılı ve objeler null değil ise , contry lookup'a Leave olayını, city lookup'ına Enter olayını ekliyoruz. Önce çıkarıp sonra ekleme yapmamızın sebebi bir sonraki seferde Editform açıldığında olay zaten ekli ise hata vermesin diye yapılmaktadır.
contry lookup Leave olayında yani country lookup'ından değer seçilip fokus başka kontrole kaydığı zaman, , contry looku'ı terkedildiğinde, şehirler lookup'ını boşaltıryoruz. (datasource=null)
citylookup'ı aktifleştirildiği, kullanıcı city editörüne tıkladığında ise seçilmiş ülkeyi ilgili sütundaki bilgiyi okuyarak öğreniyoruz ve şehirler lookup'ını buna göre filtreleyen methodu çağırıp bunu lookup'a datasource olarak atıyoruz.
Hiç yorum yok:
Yorum Gönder