EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:限制使用“新建操作”创建的对象数量

本主题描述如何限制最终用户可以使用“新建 操作”创建的对象数。假设您正在使用“业务类库”中的“任务”业务类。使用“操作”创建新任务时,将检查现有任务对象的数量,并且如果已经存在三个对象,则将不允许最终用户创建其他对象。

注意

移动平台不支持本主题中描述的方法。

提示

DevExpress代码示例数据库(http://www.devexpress.com/example=E239)中提供了完整的示例项目。

接取任务列表查看时,的行动是要创建一个新的对象,处理NewObjectViewController.ObjectCreating的事件NewObjectViewController,其中包含了新的行动。为此,实现一个新的View Controller并以以下方式覆盖OnActivated方法。

using DevExpress.ExpressApp;
using DevExpress.Persistent.BaseImpl;
using DevExpress.ExpressApp.SystemModule;
//...
public class LimitTaskAmountController : ViewController {
    private NewObjectViewController controller;
    protected override void OnActivated() {
        base.OnActivated();
        controller = Frame.GetController<NewObjectViewController>();
        if (controller != null) {
            controller.ObjectCreating  = controller_ObjectCreating;
        }
    }
    void controller_ObjectCreating(object sender, ObjectCreatingEventArgs e) {
        if ((e.ObjectType == typeof(Task)) && 
            (e.ObjectSpace.GetObjectsCount(typeof(Task), null) >= 3)) {
                e.Cancel = true;
                throw new UserFriendlyException(
                    "Cannot create a task. Maximum allowed task count exceeded.");
        }
    }
    protected override void OnDeactivated() {
        if (controller != null) {
            controller.ObjectCreating -= controller_ObjectCreating;
        }
        base.OnDeactivated();
    }
}
注意

您可以禁用某个动作,而不要中断其执行。请参阅“如何:在当前视图具有未保存的更改时禁用操作”示例。

相关文章

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