Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Burada override edilen metodlar kaldırılmalı. Logo CRM de kullanıcı ve rolleri ile ilgili işlemler yapıldığı için burada yapılması hataya sebep olacaktır.

8. Adım : Controller Eklenmesi

XAF Template Gallery kullanılarak XAF Controller dan View Controller Seçilir.

Code Block
languagec#
titleController
linenumberstrue
collapsetrue
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DevExpress.Data.Filtering;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.Editors;
using DevExpress.ExpressApp.Layout;
using DevExpress.ExpressApp.Model.NodeGenerators;
using DevExpress.ExpressApp.SystemModule;
using DevExpress.ExpressApp.Templates;
using DevExpress.ExpressApp.Utils;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.Validation;
using Solution10.Module.BusinessObjects;
using logocrm.net.Module.BusinessObjects;

namespace Solution10.Module.Controllers
{
    public partial class Sample_Controller : ViewController
    {
		private static bool subs = false;
        public Sample_Controller()
        {
            InitializeComponent();
        }
        protected override void OnActivated()
        {
			//Hedefe bağlı olarak çeşitli görevleri gerçekleştirir.
            base.OnActivated();
              if (!subs)
            {
                ObjectSpace.ObjectChanged += ObjectSpace_ObjectChanged;
                subs = true;
            }
        }

        private void ObjectSpace_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            if (e.PropertyName == "Firma")
            {
                BO_Sample sample = ((BO_Sample)View.CurrentObject);
                if (e.NewValue != null)
                {
                    sample.Name = ((MT_Firm)e.NewValue).FirmTitle + "_"; 
                }
                else
                {
                    sample.Name = "";
                }
                
            }
        }

        protected override void OnViewControlsCreated()
        {
			// Hedef Görünüm kontrolüne erişir ve özelleştirir.
            base.OnViewControlsCreated();
        }
        protected override void OnDeactivated()
        {
           // Önceden abone olunan etkinliklerden çıkar ve diğer referansları ve kaynakları serbest bırakır.
              if (subs)
            {
                ObjectSpace.ObjectChanged -= ObjectSpace_ObjectChanged;
                subs = false;
            }
            base.OnDeactivated();
        }
    }
}

9. Adım : Business Object setter Getter 

Set/Get ve  ImmediatePostData eklentilerileri yapılır. Controller ve İş nesneleri bütünüyle sunucuda yönetilir.

...

Code Block
languagec#
titleSample BO
linenumberstrue
collapsetrue
using System;
using System.Linq;
using System.Text;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using System.ComponentModel;
using DevExpress.ExpressApp.DC;
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using System.Collections.Generic;
using DevExpress.ExpressApp.Model;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;
using logocrm.net.Module.BusinessObjects;

namespace Solution10.Module.BusinessObjects
{

 

    [DefaultClassOptions]
    //[ImageName("BO_Contact")]
    //[DefaultProperty("DisplayMemberNameForLookupEditorsOfThisType")]
    //[DefaultListViewOptions(MasterDetailMode.ListViewOnly, false, NewItemRowPosition.None)]
    //[Persistent("DatabaseTableName")]
    // Specify more UI options using a declarative approach (https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument112701).
    public class BO_Sample : BaseObject
    { // Inherit from a different class to provide a custom primary key, concurrency and deletion behavior, etc. (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument113146.aspx).

        private string name;
        private MT_Firm firma;

        public BO_Sample(Session session)
            : base(session)
        {
        }

        public string Name { get => name; set => name = value; }

        [ImmediatePostData]
        public MT_Firm Firma
        {
            get
            {
                return firma;
            }
            set
            {
                SetPropertyValue("Firma", ref firma, value);
            }
        }

        public override void AfterConstruction()
        {
            base.AfterConstruction();
            // Place your initialization code here (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112834.aspx).
        }
        //private string _PersistentProperty;
        //[XafDisplayName("My display name"), ToolTip("My hint message")]
        //[ModelDefault("EditMask", "(000)-00"), Index(0), VisibleInListView(false)]
        //[Persistent("DatabaseColumnName"), RuleRequiredField(DefaultContexts.Save)]
        //public string PersistentProperty {
        //    get { return _PersistentProperty; }
        //    set { SetPropertyValue("PersistentProperty", ref _PersistentProperty, value); }
        //}

        //[Action(Caption = "My UI Action", ConfirmationMessage = "Are you sure?", ImageName = "Attention", AutoCommit = true)]
        //public void ActionMethod() {
        //    // Trigger a custom business logic for the current record in the UI (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112619.aspx).
        //    this.PersistentProperty = "Paid";
        //}
    }
}


10. Adım : Otomatik Deploy Tanımı


Sadece proje.Module çıktısı kullanılacaktır. Üretilen dll elle ya da aşağıdaki gibi otomatik olarak hedef dizine kopyalabilir.

...