DevExpress: настройка отображаемого текста в представлении списка планировщика XAF

У меня есть бизнес-объект в моем приложении XAF, который наследуется от стандартного класса Scheduler'Event'. В представлении списка я получаю представление списка планировщика по умолчанию, в котором поля отображают описательный текст. Я хочу отображать дополнительный текст в этих полях. Я осмотрелся и нашел событие «ScheduleControl.InitAppointmentDisplayText», но не смог понять, как реализовать его в моем классе.


person user1821344    schedule 18.03.2015    source источник


Ответы (1)


Вы можете реализовать следующий код в контроллере представления в рамках проекта Module.Win.

namespace Project.Module.Win.Controllers{

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Scheduler.Win;
using DevExpress.XtraScheduler;

public partial class SchedulerViewController : ObjectViewController<ListView, Project.Module.BusinessObjects.Event>
{
    public SchedulerViewController()
    {
        this.InitializeComponent();
        this.RegisterActions(this.components);
    }

    protected override void OnViewControlsCreated()
    {
        base.OnViewControlsCreated();

        SchedulerListEditor listEditor = View.Editor as SchedulerListEditor;

        if (listEditor != null)
        {
            SchedulerControl scheduler = listEditor.SchedulerControl;

            if (scheduler != null)
            {
                scheduler.InitAppointmentDisplayText += new AppointmentDisplayTextEventHandler(this.SchedulerControl_InitAppointmentDisplayText);
            }
        }
    }

    private void SchedulerControl_InitAppointmentDisplayText(object sender, AppointmentDisplayTextEventArgs e)
    {       
        MyEventObject myEventObject = this.ObjectSpace.GetObjectByKey<MyEventObject>(e.Appointment.Id);

        if (myEventObject != null)
        {
            e.Text = string.Concat("Text Goes Here - ", myEventObject.FieldValue);
        }
    }
}
person Shwabster    schedule 18.03.2015
comment
Мне не удалось получить доступ к свойствам моего класса. e.Appointment дает доступ только к свойствам «События» по умолчанию. - person user1821344; 18.03.2015
comment
View.Editor.List содержит список всех объектов, доступных в списке. Но View.CurrentObject всегда возвращает null - person user1821344; 18.03.2015
comment
Я обновил свой ответ для вас, мне удалось заставить его работать, показывая мои настраиваемые поля, которые я добавил в свой класс событий. - person Shwabster; 18.03.2015