14 Mart 2010 Pazar

Ms crm formlarını javascript ‘le özelleştirmek 4


Merhaba arkadaşlar bugün tekrar özelleştirmeyle ilgili scriptlere devam edeceğim. Geliştiricilerin işlerine çok yarayacak ve ayrıca hiç zorlanmadan birçok özelleştirmeyi scriptlerle nasıl yapabileceklerini  çeşitli örneklerle göstereceğim.
Global.js dosyası nasıl kullanılır ve içine nasıl javascript kodları yazılır:
Varlık  formundaki alanların içine yazdığımız javascriptlerin bazı durumlarda sonradan okunamadığını,  kayboldunu hepimiz biliriz. Bunun için javascript yazılması istenen alanlar  ve ya fomlar  için External(harici)  bir js dosyasında kullanabileceğimizi ve bunu sadece  fonksyionun adını yazarak yazdığımız scriptleri çağıracağımızı göreceksiniz.  Böylece uzun ve ya karmaşık scriptleri crm formlarına yazmamış olacağız. Bu da bize bir ide kullanarak kolay bir şekilde kod yazmamızı  ve ms crm i daha az meşgul ederek hızlı ve daha effective kullanmamızı sağlayacaktır.
Bunun için yapmamız gereken yöntem ise Ms crm’in kurulduğu yerden ( C:\inetpub\wwroot olmakla birlikte bazen Program Files’ın Microsoft CRM klasörü  altındada olabiliyor.  _static\_common\scripts\Global.js) dosyasına açarak  aşağıdaki kod satırını eklemeliyiz. Birden fazla js  dosyasıda  isteniyorsa ayrı ayrı ekleyebiliriz ve istediğimiz fonksiyonları çağırabiliriz. Aşağıda gördüğünüz kodu global.js  dosyası içine eklerseniz kendi yazdığınız js dosyasının fonksiyonlarını ms crm formları içinden fonksiyon adlarını yazarak çağırabilirsiniz.
src='../../../_static/_common/scripts/Kullanmakistediğinizjavascriptdosyaadı.js' type='text/javascript'
document.write("Yukarıdaki kodu buraya script taglarıla yazarsanız.  Kaydetiğimiz js dosayasındaki fonksiyonları Ms crm üzerinden çağırabilirsiniz.");
Formdaki tüm alanların disable edilmesi:
Formun onLoad() olayına aşağıdaki kodu yazarsanız bütün alanları disable ve ya readonly yapabilirsiniz.
for (var index in crmForm.all)
{
    var control = crmForm.all[index];
    if (control.req && (control.Disabled != null))
    {
        control.Disabled = true;
    }
}
Formun açılış  boyutunu belirlemek için aşağıdaki kodu formun onLoad() olayına yazarız.
window.moveTo(0,0);
window.resizeTo(screen.availWidth, screen.availHeight);
window.resizeTo(600, 400);


formun onLoad olayına aşağıdaki kod yazılır.

function CreateEmail(emailAddress)
{
    return function()
    {
        if (emailAddress != null && emailAddress.value.length > 0)
        {
            window.navigate("mailto:" + emailAddress.value);
  }
    }
}
crmForm.all.emailaddress1.attachEvent('ondblclick', CreateEmail(crmForm.all.emailaddress1));
crmForm.all.emailaddress2.attachEvent('ondblclick', CreateEmail(crmForm.all.emailaddress2));
crmForm.all.emailaddress3.attachEvent('ondblclick', CreateEmail(crmForm.all.emailaddress3));
kodu yazdıktan sonra oluştura basıp deneyebilirsiniz. Ayrıca burada farkındaysanız  çift tıklama event’i içinde bir örnek vermiş olduk.
Crm formundan picklist alanlarından option silmek  ve ya default değer vermek , stilini değiştirmek:
Picklist option larını silmek ve ya  değer atamak için aşağıdaki kodu yazarız. 
crmForm.all.new_alanadi.DeleteOption(4);
crmForm.all.new_alanadi.DataValue=1;
Picklist option larının background ve text rengini değiştirmek.
var list = crmForm.all.new_alanadi;
var option = list.options[0];

//Set the background color to red.
option.style.backgroundColor = "#FFEEEE";

//Set the text color to white.
option.style.color = "#FF4563";


Look up’ın Guid almak:
var deger = new Array();
deger = crmForm.all.new_lookupalan.DataValue;
var Guid = deger[0].id;
Checkbox bir alanın onLoad() dan tetiklenmesi:
Bazılarınız karşılaşmışsınızdır.  Ms  crm 4.0 da checkbox yapılan bir bit alanın change olayında hiçbir event’in  tetiklenmediğiyle.  Aşağıdaki örnek kodu formuzun onload una  yazarsanız. Dinamik bir şekilde event’i tetikleyebileceksiniz.
// Bu örneğimizde checkbox tıkladığımız zaman  bilgisayaradedi adında bir alan görünür olacaktır. Unchecked olayında ise bu alan tekrar kaybolacaktır.
crmForm.all.new_checkboxalan.onclick = function()
{
if ( crmForm.all.new_ checkboxalan.checked )
{
crmForm.all.new_bilgisayaradedi.style.display='inline';
crmForm.all.new_bilgisayaradedi_c.style.display='inline';
}
else
{
crmForm.all.new_bilgisayaradedi.style.display='none';
crmForm.all.new_bilgisayaradedi_c.style.display='none';;
}
}
Ms crm 4.0 da form üzerinden istenilen section ve ya section ların gizlenmesi ve ya gösterilmesi:
Aşağıdaki kodu formun onLoad’una yazarsanız ve tab’ın indeksini,section’ın indeksini ve sectionı gizlemek için displayType nı “none” ve ya gizli bir sectionı göstermek istemek için “inline” yazarsınız.
HideSection( 0 , 3 , "none" );  // gizlemek için.
HideSection( 0 , 3 , "inline" );  // gösterme için.
function HideSection( tabIndex , sectionIndex , displayType )
{
      var tab2Hide = document.getElementById( "tab" + tabIndex );

           tab2Hide.childNodes[0].rows[ sectionIndex ].style.display = displayType;
}
Gelecek yazımda görüşmek dileğiyle......

Ercan Top | CRM Software Developer
 +90 534 335 6873

Hiç yorum yok:

Yorum Gönder