• 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/

  • 相关阅读:
    register变量
    register变量
    const和volatile是否可以同时修饰一个变量?有什么特殊含义?
    关于多态性和虚函数的理解
    static全局变量与普通的全局变量有什么区别
    《c专家编程》学习笔记
    正则表达式入门学习
    mvc ActionResult
    ASP.NET MVC:通过 FileResult 向 浏览器 发送文件(传)
    Asp.net mvc 中的HttpContext
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1924739.html
Copyright © 2020-2023  润新知