Web uygulamalarının istemci (client) tarafında birtakım işlemleri gerçekleştirmesi sunucunun (server) daha rahat çalışmasını sağlayacaktır. Dynamics CRM'de bir web tabanlı bir mimariye sahip olduğu için bu durum onda da geçerli. DOM nesne modelinde her HTML elemanı bir nesne olduğu için DHTML programlama teknikleri ile CRM'in formlarına ve nesnelerine erişip işlemler gerçekleştirebilirsiniz.
CRM'in SDK'sı içerisinde "Client Extensions and Scripting" bölümü altında detaylı bilgilerini bulabileceğiniz metot, olay ve nesneleri bir arada bulabileceğiniz bir yazı hazırladım size.
Genel değişkenler ve metotları gördükten sonra şimdi nesnelerimizi içinde barındıran crmForm isimli formumuza ait neler varmış bir bakalım.
Aşağıdaki tabloda crmForm.all.<alanadi> ile erişilebilir alanların ortak özellik ve metotlarını bulabilirsiniz.Burada unutulmamsı gereken nokta lookup ve picklist alanların aslında birer dizi olduklarıdır. İçlerinden birden fazla veri tutabildikleri gibi kullanıcının gördüğü ile veritabanına yazılanların farklı olmasıdır. (lookup için GUID, picklist için ise seçilenin integer değeri yazılır).
Ek olarak bilinmesi gereken PartyList ve email aktivitesi To alanı birden fazla değer almaktadır. Diğer Lookupların yapıları da bir dizi olmasına karşın tek değer alırlar.Yani sadece 0. indis doludur.
Lookup alanları daha derinlemesine inceleyelim. Lookup alanların yukarıdaki özelliklere ek olarak aşağıdaki üç özelliği bulunmaktadır.
Örneklerle konuyu pekiştirelim. Lookup veri alanından değer okumak ile ilgili örnek;Bu örnekte bir primarycontactid isimli alandaki değeri öğreniyoruz.
Lookup veri alanına veri yazmakla ilgili örnek;Bu örnekte parentaccountid isimli alana değer atıyoruz.
//bir Array oluturuyoruz. var lookupData = new Array(); //Object nesnesi ekliyoruz. var lookupItem = new Object();//Object nesnemizde id, typename ve name zelliklerini dolduruyoruz. lookupItem.id = '{1AAC1363-01A1-DB11-8432-0003FF9CE217}'; lookupItem.typename = 'account'; lookupItem.name = 'A Bike Store'; // Object nesnemizi Array'a veriyoruz.lookupData[0] = lookupItem;// Array' parentaccountid alanna veriyoruz.crmForm.all.parentaccountid.DataValue = lookupData;
Picklist alanlar ile örneğimize geçelim;Bu örnekte categorytype isimli alan içerisindeki değerlerle oynuyoruz.
var oField = crmForm.all.categorytype;
// 4. öğeyi alyoruz. var oOption = oField.Options[4];
// kaç tane öğe olduğunu öğreniyoruz. alert("Original length :" + oField.Options.length);
// birinci öğeye değer atıyoruz. oField.DataValue = 1;
// birinci öğenin adını alıyoruz. alert(oField.SelectedText);
// 4. öğeyi siliyoruz. oField.DeleteOption(4);
// kaç tane öğe olduğunu öğreniyoruz. alert("New length :" + oField.Options.length);
// 4. öğeyi yeniden ekliyoruz. oField.AddOption(oOption.Text, oOption.DataValue);
// kaç tane öğe olduğunu öğreniyoruz. alert("Restored length :" + oField.Options.length);
Form üzerinde JavaScript kodu ile yukarıdaki anlattıklarımı birleştirerek her şeyi yazmanız mümkün.Daha önceki JavaScript ile ilgili makalelerimden başka örnekler de bulabilirsiniz: http://www.cub-e.net/post/CRM-icerisinden-Java-Script-kullanarak-web-sayfasc4b1-cagc4b1rmak.aspx http://www.cub-e.net/post/Microsoft-CRM-30-Navigation-Bar-Ogelerini-Form-Icinde-IFrame-Ile-Gostermek.aspx http://www.cub-e.net/post/OnSave()-Events-on-Dynamics-CRM-javascipt.aspx http://www.cub-e.net/post/OnSave()-Events-on-Dynamics-CRM---Part-II.aspx http://www.cub-e.net/post/Ascentium-CrmService-JavaScript-Library.aspx http://www.cub-e.net/post/Use-JavaScript-executecalllaunch-Dynamics-CRM-40-Workflow.aspx http://www.cub-e.net/post/CRM-workflow-date-update-includes-saturdays-sundays.aspx http://www.cub-e.net/post/Microsoft-Dynamics-CRM-JScript-Export-Tool-JavaScript.aspx
Bir makalemizin daha sonuna geldik. Umarım anlattıklarım faydalı olmuştur. Hepinize iyi çalışmalar. Barış KANLICA | Dynamics CRM MVP Microsoft Certified Business Management Solution Specialist brsk@e-kolay.net | www.cub-e.net |