‘ Enterprise Portal ’ Adlı Kategori

Axaptada Regular Expression ve Sayı Alanları

Nisan 15, 12 Yazan: akın

Axapta içinde veya Enterprise portal’de müşteri bilgileri için almanız gereken verilerden bir tanesi de telefon numarasıdır.

Axapta’nın kendi içinde, telefon numaraları için, sadece sayı girişine izin veren bir kontrol bulunmuyor fakat kullanabileceğiniz birkaç yöntem var.

Bunlardan bir tanesine Axapta’da Classes\TaxVATNumValidate\isNumeric yolundan ulaşabilirsiniz. Methodu inceleyerek oradaki yöntemi kullanabilirsiniz. Diğer bir yöntem ise string değeri isInteger methodu ile kontrol edip, sayı olup olmadığına bakabilirsiniz.

Benim göstermek istediğim yöntem ise Regular Expression kullanarak girişleri validatewrite veya validatefield methodunda kontrol etmek.

Regular expressions, .net’te çalıştığım zaman, sıkça kullandığım yöntemlerden bir tanesi. Axapta’da fazla ihtiyacım olmasa da kullanmam gereken yerler çıkıyor.

Aşağı kodu inceleyip nasıl kullanıldığını anlayabilirsiniz.

TextBuffer txt = new TextBuffer();
	str phone = "AkinDeneme55544";
	;
	 
	txt.setText(phone);
	txt.regularExpressions(true);
	 
	if (!txt.find("^[0-9]+$"))
	{
	    error (strfmt("Telefon numarasini kontrol ediniz."));
	}

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Axapta Action Menu Item kullanarak Enterprise Portal’de yönlendirme sağlamak

Nisan 15, 12 Yazan: akın

Enterprise Portal’de bir işlevi geliştirmeye çalışırken Axapta’da yazdığınız class’ları çağırmanız gerekebilir. Bu işlevi gerçekleştirmek için birden fazla yönteminiz var. Direk Bussiness Connector ile çağırabileceğiniz gibi, Proxy kullanarak da çağırabilirsiniz. Bu yazıda ise Action Url Menu Item ile bir işlevi gerçekleştirdikten sonra yönlendirmenin nasıl yapılacağını göstereceğim.

Aşağıdaki kodu kullanarak, Axgridview’den seçmiş olduğunuz satırın ActionMenuItem’a parametre olarak gitmesini sağlayabilirsiniz.

           protected void Button1_Click(object sender, EventArgs e)
	   {
	       DataSetViewRow dsvr;
	 
	       AxActionMenuItem projMenuItem = new AxActionMenuItem("PMProjTimesheetView");
	       Proxy.Args args = new Proxy.Args(this.AxSession.AxaptaAdapter);
	        
	       dsvr =this.AxDataSourceProjListTmp.GetDataSet().DataSetViews["ProjTable"].GetCurrent();
	       IAxaptaRecordAdapter projTable = dsvr.GetRecord();
	 
	        
	       args.record = projTable;
	       projMenuItem.Run(args);
	   }

ActionMenuItem’a ProjTable’da seçili kaydı gönderdik. Aşağıdaki kodu ise ActionMenuItem’ın ilişkili olduğu class’ta kullanabilirsiniz.

           protected void Button1_Click(object sender, EventArgs e)
	   {
	       DataSetViewRow dsvr;
	 
	       AxActionMenuItem projMenuItem = new AxActionMenuItem("PMProjTimesheetView");
	       Proxy.Args args = new Proxy.Args(this.AxSession.AxaptaAdapter);
	        
	       dsvr =this.AxDataSourceProjListTmp.GetDataSet().DataSetViews["ProjTable"].GetCurrent();
	       IAxaptaRecordAdapter projTable = dsvr.GetRecord();
	 
	        
	       args.record = projTable;
	       projMenuItem.Run(args);
	   }

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Enterprise Portal’da AxGroup Lookup’ını Filtreleme

Nisan 15, 12 Yazan: akın

nterprise Portal’da bildiğiniz gibi formları oluşturmak için sayfaya öncelikle Datasource daha sonra Axform ve o Axform’un içine Axgroup eklersiniz.

Daha sonra Axgroup’ın alanlarını seçerek bu formun güncelleme için mi yoksa yeni kayıt için mi kullanılacağını belirlersiniz.

Belirlediğiniz alanlarda bir Lookup var ise, sayfayı publish ettiğinizde bu lookup değeri dropdownlist olarak gözükecek ve siz değer seçmek için tıkladığınızda ise postback olup ajax ile gerçek değerleri getirecektir.

Bu gelen değerler aslında o EDT’deki tüm satırlardır. Bir noktada bu değerleri filtrelemek ve sayfaya göre getirmek isterseniz aşağıdaki adımları ve kodları kullanabilirsiniz..

Önce, Axform’un OnLookup özelliğine yazacağımız methodun ismini veriyoruz: OnLookup=”MainContact_Lookup”>

Daha sonra codebehind’a ise aşağıdaki kodu eklemeniz yeterli.

protected void MainContact_Lookup(object sender, AxLookupEventArgs e)
{

try
{
AxLookup lookup = e.LookupControl;
int _OBSRBOEPIncomeExpenseRequestTableNum = TableMetadata.TableNum(this.AxSession, "EmplTable");

using (Proxy.SysDataSetBuilder sysDataSetBuilder = Microsoft.Dynamics.Framework.BusinessConnector.Proxy.SysDataSetBuilder.constructLookupDataSet(this.AxSession.AxaptaAdapter, TableMetadata.TableNum(this.AxSession, "EmplTable")))
{
lookup.LookupDataSet = new DataSet(this.AxSession, sysDataSetBuilder.toDataSet());
}

lookup.LookupDataSet.Init();

using (Proxy.Query query = lookup.LookupDataSet.DataSetViews[0].MasterDataSource.query())
{
using (Proxy.QueryBuildDataSource datasource = query.dataSourceName("EmplTable"))
{
TableMetadata handHeldMetaData = MetadataCache.GetTableMetadata(this.AxSession, _OBSRBOEPIncomeExpenseRequestTableNum);
TableDataFieldMetadata handHeldField = (TableDataFieldMetadata)handHeldMetaData.Fields.GetByName("EmplId");


using (Proxy.QueryBuildRange range = datasource.addRange(handHeldField.FieldId))
{
range.status = (int)Proxy.RangeStatus.Hidden;
range.value = "0000"; // filtrelenmek istenen deger
}

}
}
}
catch (Exception ex)
{
InfoWrite("Lookup olusturulurken hata olustu: " + ex.Message);
}

}

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Enterprise Portal’da Mevcut Context İle Sayfa Yönlendirmesi

Nisan 15, 12 Yazan: akın

Enterprise Portal’de bazen bir kaç adım içeren işlemler yapmanız gerekebilir. Bu durumda mevcut sayfada kayıt ettiğiniz veya kullandığınız verileri diğer sayfaya da aktarmanız gerekir.

Verileri diğer sayfaya aktarabilmek için öncelikle Axapta tarafında Web Url Menu Item oluşturmanız ve bu menünün hangi sayafaya yönleneceğiniz belirtmeniz gerekir.

Daha sonra Visual Studio’da code behind’da aşağıdaki kodu kullanmanız yeterli.

AxTableContext context;
AxUrlMenuItem menuItem;

// Dataset'te mevcut olan satir alinir.
row = AxDataSource1.GetDataSet().DataSetViews["smmBusRelTable"].GetCurrent();
	 
// Mevcut datasource satirindan context nesnesi yaratilir.
context = AxTableContext.Create(row.GetDefaultTableDataKey(row.DataSetView.Metadata.RootDataSource));
	 
// Sayfayi acmak icin AxUrlMenuItem olusturulur.
menuItem = new AxUrlMenuItem("OBSBrAddDeneme");

// Olusturulan menu item'a context belirtilir.
menuItem.MenuItemContext = context;

// ve sayfa yonlendirmesi yapilir.
Response.Redirect(menuItem.Url.OriginalString);

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email]