EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

调度程序模块概述

日程安排程序模块的设计以显示所需的列表视图通过SchedulerControlXtraScheduler库在Windows窗体应用程序,并通过ASPxSchedulerASPxScheduler在ASP.NET应用程序库。这些控件适用于以有效方式呈现和管理调度信息。各种日期时间视图,多种资源显示,日期导航器,最终用户功能和其他功能-使您的日程安排应用程序更简单,更易于使用的所有功能。要使用Scheduler控件,eXpressApp Framework的Scheduler模块提供SchedulerListEditorASPxSchedulerListEditor用于显示列表视图。这些列表编辑器的目标对象是从业务类库实现IEvent接口的对象。另外,调度程序模块提供了特殊的属性编辑器来显示IEvent的属性。本主题详细介绍了使用Scheduler模块的所有基础知识。要了解有关SchedulerControl和ASPxScheduler控件及其功能的更多信息,请转到XtraScheduler概述和ASPxSchedulerDemos链接,或参考XtraScheduler和ASPxScheduler帮助文档。请注意,调度程序模块当前不支持所有功能。但是,所有这些都计划在不久的将来实施。

Scheduler模块由两个模块项目提供:

  • SchedulerWindowsFormsModule

    添加对DevExpress.ExpressApp.Scheduler.v 19.2 .dllDevExpress.ExpressApp.Scheduler.Win.v 19.2 .dll程序集的引用。

    您可以将此模块添加到Windows窗体模块。为此,调用模块设计器并将SchedulerWindowsFormsModule从“工具箱”拖动RequiredModules面板。或者,您可以将此模块添加到Windows Forms应用程序项目中。为此,调用应用程序设计器并将SchedulerWindowsFormsModule工具箱拖到“模块”面板。在Designer中进行更改后,请不要忘记重建解决方案。

  • SchedulerAspNetModule

    添加对DevExpress.ExpressApp.Scheduler.v 19.2 .dllDevExpress.ExpressApp.Scheduler.Web.v 19.2 .dll程序集的引用。

    您可以将此模块添加到ASP.NET应用程序项目中。为此,请调用“应用程序设计器”,并将SchedulerASPNETModule从“工具箱”拖动到“模块”面板。或者,您可以将此模块添加到ASP.NET模块中。要做到这一点,调用模块设计并拖动SchedulerASPNETModule工具箱RequiredModules面板。请注意,在这种情况下,您将需要手动将调度程序模板添加到应用程序项目中。最简单的方法是通过Application Designer将SchedulerASPNETModule模块添加到应用程序项目中,然后将其删除。这将自动添加所有必需的模板。

    在Designer中进行更改后,请不要忘记重建解决方案。

注意

调度程序模块元素

若要使用SchedulerControl(或ASPxScheduler)显示列表视图,此视图表示的对象必须实现DevExpress.Persistent.Base.General.IEvent接口。您可以从头开始实现它们,也可以使用Business Class Library中的即用型DevExpress.Persistent.BaseImpl.Event类。若要查看如何实现此类,请参考%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \ Sources \ DevExpress.Persistent \ DevExpress.Persistent.BaseImpl文件夹。要将特定成员添加到此类,请从其继承。

要按原样使用DevExpress.Persistent.BaseImpl.Event类,请将其添加到应用程序模块中。为此,请使用模块设计器并重建解决方案。

Event业务类(内置或自定义)已添加到Application Model中,这意味着该类将参与UI构造过程。调用Windows窗体或ASP.NET应用程序项目的模型编辑器,然后找到“视图” | “视图”。Event_ListView节点。引用Scheduler模块(Windows窗体或ASP.NET)时,此节点的IModelListView.EditorType属性设置为DevExpress.ExpressApp.Scheduler.Win.SchedulerListEditor(或DevExpress.ExpressApp.Scheduler.Web.ASPxSchedulerListEditor)值。否则,将其设置为GridListEditor(或DevExpress.ExpressApp.Web.Editors.ASPx.ASPxGridListEditor)值,它代表常规的列表编辑器。通常,您可以将此属性设置为任何适当的值。此外,您可以添加一个操作,该操作将允许最终用户在不同的列表视图变体之间进行切换。有关详细信息,请参阅“视图变体模块”主题。

IEvent接口具有以下属性:主题,描述,StartOn,恩顿,阿迪,位置,标签状态,类型(由调度控制组)和RESOURCEID(见在资源调度)。所述SchedulerListEditor显示每个以特定的方式这些性质的(见下面的图)。该标签状态属性值显示列表中查看与该事件相关联小区的特定颜色。此颜色绑定到每个预定义值。为此,SchedulerWindowsFormsModule模块提供SchedulerLabelPropertyEditorSchedulerStatusPropertyEditor属性编辑器,并提供SchedulerASPNETModule模块提供ASPxSchedulerLabelPropertyEditorASPxSchedulerStatusPropertyEditor属性编辑器。它们分别在详细信息视图中显示IEvent.LabelIEvent.Status属性。您为这些属性选择的值将绑定到特定颜色。此颜色表示事件列表视图中的属性值。

下图演示了Windows Forms应用程序中的事件详细信息视图和列表视图:

SchedulerModule_DetailViewSchedulerModule_ListView

下图演示了ASP.NET应用程序中的事件详细信息视图和列表视图:

SchedulerModule_DetailView_Web

SchedulerModule_ListView_Web

请注意,XAF应用程序中的“编辑约会”对话框已替换为“事件详细信息视图”。

事件列表视图具有几种视图类型(上图显示了日视图)。事件对象的属性在每个视图中以不同的方式显示。要设置所需的视图,请使用“应用程序模型”的“视图” | “ SchedulerViewType”属性。<ListView>节点。在ASP.NET应用程序中,设置包围调度程序的滚动容器的所需高度。使用视图| 为此,<ListView>节点的IModelListViewSchedulerWeb.ScrollAreaHeight属性。

在ASP.NET应用程序中,可以设置“计划程序列表编辑器”显示的所需日历数。为此,请使用应用程序模型的“视图” | “日期导航器”属性。<ListView>节点。

Scheduler模块还允许您为事件对象指定资源。例如,在管理汽车租赁公司数据的应用程序中,事件表示公司租用任何汽车的任何时间间隔。这些汽车可以表示为资源。这意味着您可以安排特定资源(汽车)繁忙的时间。若要了解如何添加资源以及Scheduler Windows窗体和ASP.NET控件如何显示资源,请参阅Schedule主题中的资源。

使用代码访问调度程序控件

您可以利用SchedulerControlASPxScheduler控件。要使用代码访问所需的控件,请创建一个View Controller并覆盖其OnActivated方法。该控制器仅应为列表视图激活。因此,将Controller的ViewController.TargetViewType属性设置为ListView值。

在WinForms模块项目中访问SchedulerControl

using DevExpress.ExpressApp.Scheduler.Win;
using DevExpress.Persistent.Base.General;
using DevExpress.XtraScheduler;
//...
public partial class SchedulerController : ViewController {
   //...
   protected override void OnActivated() {
       base.OnActivated();
       if (View.ObjectTypeInfo.Implements<IEvent>())
          View.ControlsCreated  = View_ControlsCreated;
   }
   void View_ControlsCreated(object sender, EventArgs e) {
      ListView view = (ListView)View;
      SchedulerListEditor listEditor = (SchedulerListEditor)view.Editor;
      SchedulerControl scheduler =  listEditor.SchedulerControl;
      // Do what you want with the scheduler
   }
  protected override void OnDeactivated(object sender, EventArgs e) {
      if(View.ObjectTypeInfo.Implements<IEvent>()) {
          View.ControlsCreated -= new EventHandler(View_ControlsCreated);
      }
   }
}
注意

如果在处理SchedulerControl事件时发生“ CrossThreadFailure”错误,请将控件的SchedulerOptionsBehavior.UseAsyncMode选项设置为false

在ASP.NET模块项目中访问ASPxScheduler

using DevExpress.ExpressApp.Scheduler.Web;
using DevExpress.Persistent.Base.General;
using DevExpress.Web.ASPxScheduler;
//...
public partial class SchedulerController : ViewController {
   //...
   protected override void OnActivated() {
       base.OnActivated();
       if (View.ObjectTypeInfo.Implements<IEvent>()) {
          View.ControlsCreated  = View_ControlsCreated;
       }
   }
   void View_ControlsCreated(object sender, EventArgs e) {
      ListView view = (ListView)View;
      ASPxSchedulerListEditor listEditor = (ASPxSchedulerListEditor)view.Editor;
      ASPxScheduler scheduler =  listEditor.SchedulerControl;
      // Do what you want with the scheduler
   }
   protected override void OnDeactivated() {
      if(View.ObjectTypeInfo.Implements<IEvent>()) {
         View.ControlsCreated -= new EventHandler(View_ControlsCreated);
      }
      base.OnDeactivated();
   }
}
相关文章

转载保留此链接,注明出处