Çeşitli web kontrollerinde (örn. Datagrid ve DataListl), bazı resimlerin bind edilen veriye göre resim kaynaklarını kullanmasını isteriz. Resimlerin url'lerini dinamik belirlerken dogal olarak tooltipleride güncellemek istersiniz. Aşagıdaki örnekdeki gibi IMAGE kontrollerinin URL ve ALT html taglarını databound anında belirlenmiştir :
Template fieldaki imagelerin dinamik baglanması konusu şu şekil sizinde bildigi üzere :
//prod. with camp.
string k = ortak.LOGO.UrununKampanyasi(((DataRowView)e.Row.DataItem).Row["LOGICALREF"].ToString());
if (k != "")
{
((Image)e.Row.FindControl("img_kampanyali")).Visible = true;
((Image)e.Row.FindControl("img_kampanyali")).AlternateText ="Kampanya Koşulu : " + k;
} Burada ben sürekli resimlerde tooltip olarak ALT html tagını kullanırdım <img src="var.gif" Alt="Stokda"/> gibi
Lakin Firefox ve Chrome bunları görüntülememekte, biraz araştırınca sorunu fark ettim efendim, sizinlede paylaşayım dedim.
Resimler deki ALT (AlternativeText) tagı, yanlızca resimin browser tarafından gösterilemedigi durumlarda görüntülenmek üzere oldugu için, FF ve chrome tooltip olarak göstermez. Halbuki IE bunu tooltip gibi sürekli göstermekte, IE 6 dan IE 8 kadar bu böyle.
Lakin FF ve Chrome buna bozulur, kardeşim W3C bu iş için aslan gibi TITLE tagını yapmış nüçun onu kullanmazsın der ve ALT ları tooltip olarak göstermez. Ama Visual Studio 2005 ve 2008 de code sectionda
((Image)e.Row.FindControl("img_kampanyali")).Title="Kampanyalı ürün";
derseniz VS size kızar ve derlemez. O ne olaki der !
Hal böyle olunca iş yine JS e düşer ve şu method hayatınızı kurtarır:
<script language="javascript" type="text/javascript">
window.onload=function()
{
for (var i = 0; i < document.images.length; i++)
{
if (document.images[i].title == "")
document.images[i].title = document.images[i].alt;
}
};
</script>
Siz yine bildiginiz yöntemle yaparsınız (ALT tagı ile), bu JS sayfaki bütün imageleri tek tek dolaşır TITLE ı olmayan resimlere ALT tagında yazanı atar. Sizinde sorun çözülür.
O zman ne diyoruz hep birlikte "yaşasın JS !..."