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/

  • 相关阅读:
    红黑树以及与AVL树的区别
    yum安装mysql
    sql注入攻击
    http keep-alive
    csrf和xss
    点击事件跳转QQ 添加好友
    引入百度地图及出现的问题
    node 出现npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID npm ERR! errno ERR_TLS_CERT_ALTNAME_INVALID npm ERR! request to https://registry.cnpmjs.org/vue-cli failed, reason:
    正则表达式校验-大于0的所有数,小数点后保留两位小数和正整数
    vue项目引入富文本编辑器(回显)
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1924739.html
Copyright © 2011-2022 走看看