Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > Focus() Nedir?
Yazar
dotnetonur


avatar
Dersaadet
Kayıt: 21.11.2007
28.11.2007-10:56 #31824
Focus methodu karşımıza ASP.NET 2.0 ile karşımıza çıkar. HTML server kontrolleri dışında , her web kontrolü Focus() methoduna sahiptir. Focus kontrolü sadece input (girdi) kontrolleri için etkilidir. Örneğin kullanıcıların bilgilerini düzenleyebildiği bir form düşünün. Focus() methodu ile kullanıcının adres bilgilerini belirtiğiniz textboxa getirebilirsiniz. Bu yol ile cursor bu textboxda belirecektir. Ayrıca textboxınız formunuzun neresinde olursa olsun otomatik olarak sayfanızın ordan açılacaktır. (scrolls o hizada olacak). Sayfa bir kere render edildiğinde kullanıcı Tab tuşunu kullanarak bir kontrolden diğerine geçebilir.

Sayfanızın işi bittiğinde ve sayfa render ediliğinde ,ASP.NET sayfanızın sonuna extradan bir javascript kodu ekler.Bu kod en son Focus() methodunu tetikliyen control için bir nokta belirler. Aşağıda TextBox2 kontrolü için gerekli olan focus için yazılmış javascript kodu gösterilmiştir:

<script type="text/javascript">
<!--
WebForm_AutoFocus('TextBox2');// -->
</script>


Şayet Focus() methodunu kullanmamış iseniz bu kod sayfanıza eklemiyecektir. Eğer birden fazla control için Focus() methodunu kullanmış iseniz javascript kodu en son kullanığınız kontrolü kullanacaktır.
Focus() metodunu programatik olarak kullanmaktansa , bir kontrolü daima focus edebilirsiniz. (Focus methodunu çağırıp override etmedikçe). Bunu aşağıdaki gibi DefaultFocus özelliğini kullanarak yapabilrsiniz

<form id="Form1" DefaultFocus="TextBox2" runat="server">


Bu arada, focus edilmiş kod Javascipt üzerinden WebForm_AutoFocus() u kullanır ve ASP.NET bunu otomatik olarak üretir. Teknik olaarak Javascript metotları bir ASP.NET uazantısı olan WebResource.axd ile sağlanır . Kaynak Focus.js diye adlandırılır. Şayet kodunuzu HTML kodlrını inceleyecek olursanız <script src="WebResource.axd?a=s&r=WebForms.js"></script> bu tarzda bir koda rastlıyacaksınızdır. Bu isteği browserınızdan download etmek ve java script dokumanlarını incelemek için direk olarak yazabilirsiniz. Bu oldukça uzun, çünkü focus edilmemiş ama focus edilmiş alt durumlar içermesi durumunda dikkatli olmak gerekmektedir. Fakat aşağıdaki kod focus mantığının ana esasını göstermektedir.

function WebForm_AutoFocus(focusId) {
//  ID ye bağlı olarak unsuru bulur (browsera gore kod değişir)
var targetControl;
if (__nonMSDOMBrowser) {
targetControl = document.getElementById(focusId);
}
else {
targetControl = document.all[focusId];
}
// Kontrolün focus kabul edip etmediğini  yada alt  elemanın focus içerip içermediğini control eder

var focused = targetControl;
if (targetControl != null && (!WebForm_CanFocus(targetControl)) ) {
focused = WebForm_FindFirstFocusableChild(targetControl);
}
 // Eğer kontol doğru ise , focusu uygular ve 
scroll bar da onun hizasına gelir.
if (focused != null) {
try {
focused.focus();
focused.scrollIntoView();
if (window.__smartNav != null) {
window.__smartNav.ae = focused.id;
}
}
catch (e) {
}
}
}

Gördüğünüz üzere kodun ilk işi Interner Explorer ın en son versiyon olup olmadoğını control etmektir.(Ve bu nedenle Microsft DOM u destekler). Fakat bu mümkün değilse dahi kod hala güç algılanan ayırımlar ile otomatik focusu gerçekleştirecektir. Focus methodunu yönetmenin diğer bi yolu ise Access Keydir. Örneğin TextBox’ın AccessKey özelliğini A olarak atarsanız, ve daha sonrada Alt+ A tuşlarına bazarsanız focus TextBox ınız olarak değişecekitr. Label ler focus methodunu Kabul etmez. Fakat bir labela bu özelliği atamak isterseniz Label.AssociatedControlID ye input kontolünüz belirtmeniz gerekmekrtedir.

Örneğin açağıdaki kodda label focus olarak belirtilmiştir ve Alt + 2 tuşlarına bastığımız zaman focus TextBox2 olacaktır.

<asp:Label AccessKey="2" AssociatedControlID="TextBox2" runat="server">
TextBox2:</asp:Label><asp:TextBox runat="server" ID="TextBox2" />


Access keys Microsoft ürünü olmayan FireFoxuda destekler.

http://www.asepedatnet.com/makale_goster.aspx?Id=1





Ortam sanal olsa da, islenen suc gercektir...

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb