Web uygulamalarında hem işlemin devamı için bir duraksamaya, hem de arka taraftaki kontrollerin messageBox gösterilirken disable bir hale gelmesi gerekir. Bunu biraz html biraz java script ile gerçekleştirmek mümkün. Öncelikle ne yapmamız gerektiğini tam olarak belirleyecek bir senaryo yaratalım.
1) Kullanıcı datagrid üzerinde gördüğü verilerden birtanesini seçti. 2) Seçtiği bu satırı silmek için "sil" butonuna bastı. 3) Karşısına "silmek istediğinize emin misiniz?" sorusunu soran ve "evet" , "hayır" butonları olan bir messagebox açıldı. Bu mesajbox açıkken kullanıcının görünen tüm öğelerden yalnızca ve yalnızca evet ve hayır butonlarına basması gerekmektedir. 4) evet butonuna basıldı ise ilgili kayıdı siler. 5) hayir butonuna basildi ise bir işlem yapmaz. 6) messagebox kapanır ve sayfa içeriği yeniden aktive edilerek kullanılabilir bir duruma geçer.
3. adımdan itibaren neler gerektiğini belirler isek, mesajımızı göstereceğimiz bi bölüm, cevap alacağımız butonlar, arkadaki içeriğin bloke edilmesi en önemli işlevlerimizdir. Bunu nasıl yapabileceğimizi belirleyelim.
Bir çoğumuz javascript ile actirabileceğimiz ( window.showModalDialog(...) ) bir pencere ile arkadaki sayfayi blocklayabileceğimizi biliyoruz. Fakat yeni bir pencere açmak = popup blocker'lara yakalanmaktır. Bu da bir çok web developer için istenmeyen durumlardan biridir. Öyleyse göstereceğimiz pencere, aynı explorer penceresinde olmalıdır. Bunun için de en uygun html componentimiz panellerdir.
Panellerin yerleşimi ise şöyle, bir tane, tüm sayfayı kaplayacak, transparan, z-index'i tüm componentlerin üzerinde olacak bir panel. Bunun sayesinde arkadaki içeriği gizlemiş, tıklanamaz hale getirmiş olduk. Fakat, hepimizin bildiği gibi, dropdown listler her zaman en üstte kalırlar, onları da bir javascript ile (hideSelectBoxes() ) invisible yapabiliriz.
Sonrasında yapmamız gereken şey; mesajımızı, messageBox buttonlarımızı göstereceğimiz yeni bir alan -panel- bu panel ise, hem az önceki transparan panelin hem de diğer içeriğin üzerine gelecek bir z-index e sahip olmalıdır.
projede, görselliği düzenlemek için iki adet daha panel kullanılmıştır. Bu title ve mesajı tam olarak istenilen yerlere oturtmak için kullanılan panellerdir.
MessageBox server tarafında 3 adet event içerir : Btn1Clicked, Btn2Clicked, Btn3Clicked İki adet style içerir : msg.MessageBoxStyle.Violet, msg.MessageBoxStyle.Blue ve üç adet icondan oluşur. msg.MessageBoxIcons.Exclamation, msg.MessageBoxIcons.Asteriks, msg.MessageBoxIcons.Question, msg.MessageBoxIcons.None
Btn1Clicked
Btn2Clicked
Btn3Clicked
msg.MessageBoxStyle.Violet, msg.MessageBoxStyle.Blue
msg.MessageBoxIcons.Exclamation
msg.MessageBoxIcons.Asteriks
msg.MessageBoxIcons.Question
msg.MessageBoxIcons.None
Kontrolün kullanımı için Resources directorysi ile Mbox.ascx kontrolünü projeye eklemeniz ve sonrasında da kontrolu sürükleyip formun üzerine bırakmanız yeterlidir.
Kontrolun kullanımı ile örnek bir kod ise şu şekilde:
Herkese iyi çalışmalar dilerim.
Kivanc OZUOLMEZ