• 扩展XAF模型信息实现自定义功能


    如何隐藏 web listview 的 编辑控制列如下图: 这列怎么让它隐藏? 

    感谢【少侠】XAF_杨东 提供解答!感谢XAF_小学生整理。


     

    A: 注册自定义接口IModelListViewExtender 增加控制项 .

    1、定义一个IModelListViewExtender接口。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ExpressApp.Extensions.Common
    {
        public interface IModelWebListViewExtender
        {
            bool HiddenCommandColumn { get; set; }
        }
    }

    2、到XAF的web工程中注册这个扩展。

    using System;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
    using DevExpress.ExpressApp;
    using DevExpress.ExpressApp.DC;
    using System.Collections.Generic;
    using DevExpress.ExpressApp.Model;
    using DevExpress.ExpressApp.Editors;
    using DevExpress.ExpressApp.Actions;
    using DevExpress.ExpressApp.Updating;
    using DevExpress.ExpressApp.Model.Core;
    using DevExpress.ExpressApp.Model.DomainLogics;
    using DevExpress.ExpressApp.Model.NodeGenerators;
    using DevExpress.Persistent.BaseImpl;
    using ExpressApp.Extensions.Common;
    
    namespace 资产管理.Module.Web {
        [ToolboxItemFilter("Xaf.Platform.Web")]
        // For more typical usage scenarios, be sure to check out https://documentation.devexpress.com/eXpressAppFramework/clsDevExpressExpressAppModuleBasetopic.aspx.
        public sealed partial class 资产管理AspNetModule : ModuleBase {
            private void Application_CreateCustomModelDifferenceStore(Object sender, CreateCustomModelDifferenceStoreEventArgs e) {
            #if !DEBUG
                e.Store = new ModelDifferenceDbStore((XafApplication)sender, typeof(ModelDifference), true, "Web");
                e.Handled = true;
            #endif
            }
            private void Application_CreateCustomUserModelDifferenceStore(Object sender, CreateCustomModelDifferenceStoreEventArgs e) {
                e.Store = new ModelDifferenceDbStore((XafApplication)sender, typeof(ModelDifference), false, "Web");
                e.Handled = true;
            }
            public 资产管理AspNetModule() {
                InitializeComponent();
            }
            public override IEnumerable<ModuleUpdater> GetModuleUpdaters(IObjectSpace objectSpace, Version versionFromDB) {
                return ModuleUpdater.EmptyModuleUpdaters;
            }
            public override void Setup(XafApplication application) {
                base.Setup(application);
                application.CreateCustomModelDifferenceStore += Application_CreateCustomModelDifferenceStore;
                application.CreateCustomUserModelDifferenceStore += Application_CreateCustomUserModelDifferenceStore;
                // Manage various aspects of the application UI and behavior at the module level.
            }
    //增加这个方法:
            public override void ExtendModelInterfaces(ModelInterfaceExtenders extenders)
            {
                extenders.Add<IModelListView, IModelWebListViewExtender>();
                base.ExtendModelInterfaces(extenders);
            }
        }
    }

    3、打开web的xafml,配置


     

    4、写一个Controller来处理这些配置项目


     GridViewCommandColumn 即选择操作的列

    using System;
    using DevExpress.ExpressApp;
    using DevExpress.ExpressApp.Web.Editors.ASPx;
    using DevExpress.Web;
    
    namespace ExpressApp.Extensions.Common.Web.Controllers
    {
        public partial class ListViewExtenderController : ViewController
        {
            public ListViewExtenderController()
            {
                InitializeComponent();
                RegisterActions(components);
    
                TargetViewType = ViewType.ListView;
            }
    
            protected override void OnDeactivated()
            {
                ListView view = (ListView)View;
                if (view.Editor == null || !(view.Editor is ASPxGridListEditor) || ((ASPxGridListEditor)view.Editor).Control == null ||
                    !(((ASPxGridListEditor)view.Editor).Control is ASPxGridView) || view.Model == null || !(view.Model is IModelWebListViewExtender))
                    return;
    
                ASPxGridView gridView = (ASPxGridView)view.Editor.Control;
                gridView.Load -= AdjustGridView;
    
                base.OnDeactivated();
            }
    
            void AdjustGridView(object sender, EventArgs e)
            {
                ListView view = (ListView)View;
                if (view.Editor == null || !(view.Editor is ASPxGridListEditor) || ((ASPxGridListEditor)view.Editor).Control == null ||
                   !(((ASPxGridListEditor)view.Editor).Control is ASPxGridView) || view.Model == null || !(view.Model is IModelWebListViewExtender))
                    return;
    
                ASPxGridView gridView = (ASPxGridView)view.Editor.Control;            
                IModelWebListViewExtender viewExtender = (IModelWebListViewExtender)view.Model;
    
    
                foreach (GridViewColumn c in gridView.Columns)
                {
                    if (c is GridViewCommandColumn)
                    {
    
                        c.Visible = !viewExtender.HiddenCommandColumn;
                    }
                    
                }
            }
    
            protected override void OnViewControlsCreated()
            {
                base.OnViewControlsCreated();
    
                ListView view = (ListView)View;
                if (view.Editor == null || !(view.Editor is ASPxGridListEditor) || ((ASPxGridListEditor)view.Editor).Control == null ||
                   !(((ASPxGridListEditor)view.Editor).Control is ASPxGridView) || view.Model == null || !(view.Model is IModelWebListViewExtender))
                    return;
    
                ASPxGridView gridView = (ASPxGridView)view.Editor.Control;
                gridView.Load += AdjustGridView;
            }
        }
    }

    完成

  • 相关阅读:
    二分法细节
    回溯总结
    质数统计查找 厄拉多塞筛
    串联字串比较
    Gitee FUCK U!
    大佬们都说简单而我暴力超时的dp题目
    UML建模工具Astah Pro 8破解教程2022最新最详细版
    r81259.007.01.tarcentos7驱动修改版
    综合案例注册页面
    html链接
  • 原文地址:https://www.cnblogs.com/foreachlife/p/5261489.html
Copyright © 2020-2023  润新知