Crm formlarında field ları çalışma zamanında Disabled ve ReadOnly propertylerini değiştirmek, gizlemek ve göstermek

by Ercan Tüzün 3/30/2008 9:15:00 PM

Disabled ve ReadOnly 

Text ve Numeric alanlar (nvarchar, ntext, float, int, money,picklist)

// readonly sini set etmek
crmForm.all.new_textfield.readOnly = true;
// yada disabled properytisini set etmek
crmForm.all.new_textfield.disabled = true;

bu iki property de bize aynı sonucu verir.

Lookup

// disable lookup field
crmForm.all.new_accountlookupid.disabled = true;

Date Field

// disable date field
crmForm.all.new_datefieldimg.disabled = true;
crmForm.all.new_datefieldimg.src = '/_imgs/btn_dis_cal.gif';

Bit Field

// disable bit field (radio buttons, checkbox, yada list gibi)
crmForm.all.new_bitfield.disabled = true;

Gizlemek ve Göstermek

crmForm.all.new_field_c.style.visibility = 'hidden';
crmForm.all.new_field_d.style.visibility = 'hidden';

crmForm.all.new_field_c.style.visibility = 'visible';
crmForm.all.new_field_d.style.visibility = 'visible';

crmForm.all.new_field_c.style.display = 'none';
crmForm.all.new_field_d.style.display = 'none';

crmForm.all.new_field_c.style.display = '';
crmForm.all.new_field_d.style.display = '';

Field 'ların Label text 'lerini değiştirmek

var propertychange;
propertychange = document.all.new_field;
propertychange.innerText = "new label text"; 

yada ;

crmForm.all.new_field_c.innerText = 'new label text';

kullanılabilir.

Tab kontrollerini gizlemek ve göstermek

//Condition kullandığın bir eventin ekle
if (condition == true) {
    //hide the second tab

    crmForm.all.tab1Tab.style.display = "none";
}

else {
    //show the second tab

    crmForm.all.tab1Tab.style.display = "";
}

 

Form üzerindeki tüm alanları disable yapmak 

for(var index in crmForm.all) {

var control=crmForm.all[index];

if(control.req && (control.Disabled != null)){

control.Disabled=true;

}

}

İyi çalışmalar...

CRM 4.0 da Lookup Filtreleme

by Ercan Tüzün 3/28/2008 11:33:00 PM

  Lookup Filtreleme işlemi bazı uygulamalarımızda gerekli olabilir.Bu işlemi ben kendi çalışmam için hazırladığım bir örnek üzerinden anlatacağım.Kendi uygulamam için City ve County adında iki tane custom entity oluşturdum. City entity sinde il değerleri county etitysinde ise bu illere ait ilçeler tutulacak.Ama county entity sini yaratırken city entity sine n:1 relation olarak tanımladım.Başka bir entity de ise n:1 relation olarak City ve County entity lerimi ekledim.Test Entity sinde  Lookup olarak yeralan  bu controllerde amacım city seçimi yapınca county lookup ına sadece seçilen city e ait county kayıtlarının yüklenmesidir.Bu işlem için crmserver ında /_custom klasörü altında lookupFilter.js dosyamı oluşturdum.

Bu dosyada yer alan get_LookupFilter() metodunda gerekli fetchxml sorgusu aşağıdaki kod halinde yazınız.

LookupFilter.js dosyasına bu kod yazılacak. 

function get_LookupFilter()
{

 if( crmForm.all.pro_cityid.DataValue != null && crmForm.all.pro_cityid.DataValue[0]!=null)
     {
  var name = crmForm.all.pro_cityid.DataValue[0].name;
  var id = crmForm.all.pro_cityid.DataValue[0].id;

  var fetchStr = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"
  + "<entity name='pro_county'>"
  + "<all-attributes/>"
  + "<filter type='and'>"
  + "<condition attribute='pro_cityid' operator='eq' uiname='"+name+"' uitype='pro_city' value='"+id +"'/>"
  + "</filter>"
  + "</entity>"
  + "</fetch>";

  
  crmForm.all.pro_countyid.lookupbrowse = 1; 
  crmForm.all.pro_countyid.additionalparams = "search="+fetchStr ;
  
  crmForm.all.pro_countyid.setAttribute("readonly", false);
 }
 else
 {
  crmForm.all.pro_countyid.setAttribute("readonly", true);
  crmForm.all.pro_countyid.DataValue = null;
 }

Lookup kontrolünün fetchxml sorgusu üzerinden yüklenebilmesi için aşağıda javascript kodu belirtilen dosya yolu altında bulunan crm e ait lookupsingle.aspx dosyasına yapıştırınız.

crmserver\_tools\lookup\lookupsingle.aspx dosyasınada bu kod eklenecek.

<script runat="server">

protected override void OnLoad( EventArgs e )
{
      base.OnLoad(e);
      crmGrid.PreRender += new EventHandler( crmgrid_PreRender );
}

void crmgrid_PreRender( object sender , EventArgs e )
{

    if (Request["search"] != null && Request["search"].StartsWith("<fetch"))
    {
       
  crmGrid.AddParameter("fetchxml", Request["search"] );
        crmGrid.Parameters.Remove("searchvalue");
  
        this._showNewButton = false;
    }
}

</script>

 

Lookup ın onchange() eventine aşağıdaki kodu yazınız.(LookupFilter.js ye ait bir metod.)

 

Formun onload() eventine aşağıdaki kodu yazınız(Bu kod serverdaki lookupfilter.js file kullanmak için).

var field = crmForm.all.new_countyid;
field.Disabled = true;

SERVER_URL =  SERVER_URL.replace(ORG_UNIQUE_NAME,"");

var oScript = document.createElement("<script src='"+ SERVER_URL +"_custom/LookupFilter.js' type='text/javascript' />");

document.getElementsByTagName("head")[0].insertAdjacentElement("beforeEnd", oScript);

Sonuç:

City Lookup ından bir kayıt seçelim..

İstanbulu seçince County Lokup ına istanbula ait ilçeler aşağıdaki gibi yüklenir.

 

Seçimden sonraki formun görüntüsü aşağıdaki gibi olacaktır...

 

İyi çalışmalar...

Örnek Uygulamanın Kodları >> LookupFilter.txt (2,50 kb)

MD CRM 4.0 'da Navigation Pane 'deki entry 'lerin form içerisinde IFrame 'de gösterilmesi

by Ercan Tüzün 3/27/2008 8:56:00 PM

  Navigation pane de bulunan entrylerin data larını bir crmgridi üzerinde aynı formda görmek kullanımı bazı durumlarda kolaylaştırabilir.

  Bu işlem için şöyle bir yol izleyebiliriz : Customize Entities den ilgili entityyi bulup form customization a giderek form üzerine bir IFrame ekleyelim. Eklediğimiz IFrame in propertylerini aşağıdaki gibi ayarlayalım.Name alanına uniq bir isim girelim.Url alanına about:blank girmeliyiz. 

 

Formun Onload() eventine aşağıdaki gibi gerekli javascript kodunu yazıp publish ediniz. Bu kodda GetFrameSource() metoduna entitynin entry ile olan ilişkisinin name ini girmelisiniz.Bu örnekte county entity sine city entity si lookup(n:1 relation) olarak tanımlanmıştır.Bu relation ın name i new_new_city_new_county olarak tanımlanmıştır. 

Entity ye ait herhangi bir kaydı çağırdığınızda aşağıdaki gibi IFrame de ilişkili kayıtların gösterildiğini  görebilirsiniz.  

İyi çalışmalar...

Blogging by Ercan TUZUN

Yazar Hakkında

Ercan TÜZÜN Ercan TÜZÜN
Computer Engineer
Software Developer.

E-mail me Send mail

Takvim

<<  September 2010  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

Recent comments

Don't show

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010

Sign in