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/

  • 相关阅读:
    phpspider爬虫框架的使用
    【php设计模式】责任链模式
    【php设计模式】策略模式
    【php设计模式】观察者模式
    【php设计模式】模板模式
    【温故知新】php 魔术方法
    【php设计模式】享元模式
    Java50道经典习题-程序18 乒乓球赛
    Java50道经典习题-程序19 输入行数打印菱形图案
    Java50道经典习题-程序20 求前20项之和
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1924739.html
Copyright © 2011-2022 走看看