Etiketler ‘ enterprise portal

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

Şubat 08, 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.

static void main(Args args)
{
    ProjTable           projTable;
    Weblink             link;
      ;
    if (args.dataset() == tablenum(ProjTable))
    {
        projTable = args.record();
        link = new Weblink();
        link.record(projTable);
        link.menufunction(new WebUrlMenuFunction(weburlitemstr(EPProjTableInfo)));
        webSession().redirect(link);
    }
}

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

Enterprise Portal’dan Axapta Datasource’a Veri Göndermek

Şubat 01, 12 Yazan: akın

Enterprise portal’da proje geliştirirken bildiğiniz gibi gerekli datasource ları Axapta tarafında oluşturuyorsunuz. Tabloya kayıt edilirken bazı başka tablolara da kayıt atmanız gerekebilir. Bu durum da datasource’a codebehind’tan context ile ilgisi olmayan bir veri göndermek isteyebilirsiniz. Aşağıdaki kod parçacıkları sizin ihtiyacınızı karşılayacaktır.

 protected void Page_Init(object sender, EventArgs e)
    {
        

        // Event Handler olusturulur.
        this.AxDataSource1.CreatingDataSetRun +=new EventHandler<CreatingDataSetRunEventArgs>(AxDataSource1_CreatingDataSetRun);
    }

    void AxDataSource1_CreatingDataSetRun(object sender, CreatingDataSetRunEventArgs e)
    {
         
        string book = "ISBN-00034454";

        // book degiskeni dataset parametresi olarak gönderilir.
        e.DataSetRunArgs.parm = book;

    }

Yukarıda gönderdiğiniz değişkeni kullanmak için ise Axapta’da ilgili datasource’da aşağıdaki gibi bir kod kullanabilirsiniz.

public void initValue()
{
    super();

    CustomerDetails.ISBN=element.args().parm();
}

Benzer yöntemle enum veya gerekli herhangi bir veriyi de gönderebilirsiniz.

[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

Ocak 28, 12 Yazan: akın

Enterprise 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

Ocak 27, 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);

Geçiş yaptığınız sayfada ise artık bu contexti kullanabilirsniz.

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