zoukankan      html  css  js  c++  java
  • XAF 如何扩展应用程序模型<二> 编辑ListView自动保存

     

    using System;
    using System.ComponentModel;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Text;

    using DevExpress.ExpressApp;
    using DevExpress.ExpressApp.Actions;
    using DevExpress.Persistent.Base;
    using DevExpress.ExpressApp.Model;
    using DevExpress.ExpressApp.Win.SystemModule;

    namespace XafExtendTest.Module.SystemModule
    {
        
    public interface IModelClassAutoCommitListView : IModelNode
        {
            [Category(
    "MyCustomProperty")]
            [Description(
    "Control if change on editable listview will be autocommited")]
            
    bool AutoCommitListview { getset; }
        }
        [ModelInterfaceImplementor(
    typeof(IModelClassAutoCommitListView),"ModelClass")]
        
    public interface IModelListViewAutoCommitListView : IModelClassAutoCommitListView
        {
        }
        
    public class AutoCommitListViewController : ViewController<ListView>,IModelExtender
        {
            
    protected override void OnViewControllersActivated()
            {
                
    base.OnActivated();
                var winDetailViewController 
    = Frame.GetController<WinDetailViewController>();
                
    if (winDetailViewController != null && ((IModelListViewAutoCommitListView)View.Model).AutoCommitListview)
                {
                    winDetailViewController.AutoCommitListView 
    = true;
                    View.QueryCanChangeCurrentObject 
    += View_QueryCanChangeCurrentObject;
                }
            }

            
    void View_QueryCanChangeCurrentObject(object sender, CancelEventArgs e)
            {
                
    if(Frame.GetController<WinDetailViewController>().SuppressConfirmation)
                    ObjectSpace.CommitChanges();
            }

            
    protected override void OnDeactivated()
            {
                
    base.OnDeactivated();
                var winDetailViewController 
    = Frame.GetController<WinDetailViewController>();
                
    if (winDetailViewController != null && ((IModelListViewAutoCommitListView)View.Model).AutoCommitListview)
                {
                    winDetailViewController.AutoCommitListView 
    = true;
                    View.QueryCanChangeCurrentObject 
    -= View_QueryCanChangeCurrentObject;
                }
            }
            
    void IModelExtender.ExtendModelInterfaces(ModelInterfaceExtenders extenders)
            {
                extenders.Add
    <IModelClass, IModelClassAutoCommitListView>();
                extenders.Add
    <IModelListView, IModelListViewAutoCommitListView>();
            }
        }
    }

     欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/

  • 相关阅读:
    实时信号阻塞队列大小测试
    实时信号和非实时信号
    [Linux]关于sigprocmask函数的讨论
    java中Map集合的常用方法 (转)
    佛跳墙
    百万数据查询效率提高方法(转)
    bootstrap table 前后端分页(超级简单)
    bootstrap table 分页序号递增问题 (转)
    Spring boot+mybatis+thymeleaf 实现登录注册,增删改查
    js弹出对话框的三种方式(转)
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1924739.html
Copyright © 2011-2022 走看看