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

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

 

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

1、定义一个IModelListViewExtender接口。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ExpressApp.Extensions.Common
  7. {
  8. public interface IModelWebListViewExtender
  9. {
  10. bool HiddenCommandColumn { get; set; }
  11. }
  12. }

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

  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.ComponentModel;
  5. using DevExpress.ExpressApp;
  6. using DevExpress.ExpressApp.DC;
  7. using System.Collections.Generic;
  8. using DevExpress.ExpressApp.Model;
  9. using DevExpress.ExpressApp.Editors;
  10. using DevExpress.ExpressApp.Actions;
  11. using DevExpress.ExpressApp.Updating;
  12. using DevExpress.ExpressApp.Model.Core;
  13. using DevExpress.ExpressApp.Model.DomainLogics;
  14. using DevExpress.ExpressApp.Model.NodeGenerators;
  15. using DevExpress.Persistent.BaseImpl;
  16. using ExpressApp.Extensions.Common;
  17.  
  18. namespace 资产管理.Module.Web {
  19. [ToolboxItemFilter("Xaf.Platform.Web")]
  20. // For more typical usage scenarios, be sure to check out https://documentation.devexpress.com/eXpressAppFramework/clsDevExpressExpressAppModuleBasetopic.aspx.
  21. public sealed partial class 资产管理AspNetModule : ModuleBase {
  22. private void Application_CreateCustomModelDifferenceStore(Object sender, CreateCustomModelDifferenceStoreEventArgs e) {
  23. #if !DEBUG
  24. e.Store = new ModelDifferenceDbStore((XafApplication)sender, typeof(ModelDifference), true, "Web");
  25. e.Handled = true;
  26. #endif
  27. }
  28. private void Application_CreateCustomUserModelDifferenceStore(Object sender, CreateCustomModelDifferenceStoreEventArgs e) {
  29. e.Store = new ModelDifferenceDbStore((XafApplication)sender, typeof(ModelDifference), false, "Web");
  30. e.Handled = true;
  31. }
  32. public 资产管理AspNetModule() {
  33. InitializeComponent();
  34. }
  35. public override IEnumerable<ModuleUpdater> GetModuleUpdaters(IObjectSpace objectSpace, Version versionFromDB) {
  36. return ModuleUpdater.EmptyModuleUpdaters;
  37. }
  38. public override void Setup(XafApplication application) {
  39. base.Setup(application);
  40. application.CreateCustomModelDifferenceStore += Application_CreateCustomModelDifferenceStore;
  41. application.CreateCustomUserModelDifferenceStore += Application_CreateCustomUserModelDifferenceStore;
  42. // Manage various aspects of the application UI and behavior at the module level.
  43. }
  44. //增加这个方法:
  45. public override void ExtendModelInterfaces(ModelInterfaceExtenders extenders)
  46. {
  47. extenders.Add<IModelListView, IModelWebListViewExtender>();
  48. base.ExtendModelInterfaces(extenders);
  49. }
  50. }
  51. }

3、打开web的xafml,配置

 

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

GridViewCommandColumn 即选择操作的列

  1. using System;
  2. using DevExpress.ExpressApp;
  3. using DevExpress.ExpressApp.Web.Editors.ASPx;
  4. using DevExpress.Web;
  5.  
  6. namespace ExpressApp.Extensions.Common.Web.Controllers
  7. {
  8. public partial class ListViewExtenderController : ViewController
  9. {
  10. public ListViewExtenderController()
  11. {
  12. InitializeComponent();
  13. RegisterActions(components);
  14.  
  15. TargetViewType = ViewType.ListView;
  16. }
  17.  
  18. protected override void OnDeactivated()
  19. {
  20. ListView view = (ListView)View;
  21. if (view.Editor == null || !(view.Editor is ASPxGridListEditor) || ((ASPxGridListEditor)view.Editor).Control == null ||
  22. !(((ASPxGridListEditor)view.Editor).Control is ASPxGridView) || view.Model == null || !(view.Model is IModelWebListViewExtender))
  23. return;
  24.  
  25. ASPxGridView gridView = (ASPxGridView)view.Editor.Control;
  26. gridView.Load -= AdjustGridView;
  27.  
  28. base.OnDeactivated();
  29. }
  30.  
  31. void AdjustGridView(object sender, EventArgs e)
  32. {
  33. ListView view = (ListView)View;
  34. if (view.Editor == null || !(view.Editor is ASPxGridListEditor) || ((ASPxGridListEditor)view.Editor).Control == null ||
  35. !(((ASPxGridListEditor)view.Editor).Control is ASPxGridView) || view.Model == null || !(view.Model is IModelWebListViewExtender))
  36. return;
  37.  
  38. ASPxGridView gridView = (ASPxGridView)view.Editor.Control;
  39. IModelWebListViewExtender viewExtender = (IModelWebListViewExtender)view.Model;
  40.  
  41. foreach (GridViewColumn c in gridView.Columns)
  42. {
  43. if (c is GridViewCommandColumn)
  44. {
  45.  
  46. c.Visible = !viewExtender.HiddenCommandColumn;
  47. }
  48.  
  49. }
  50. }
  51.  
  52. protected override void OnViewControlsCreated()
  53. {
  54. base.OnViewControlsCreated();
  55.  
  56. ListView view = (ListView)View;
  57. if (view.Editor == null || !(view.Editor is ASPxGridListEditor) || ((ASPxGridListEditor)view.Editor).Control == null ||
  58. !(((ASPxGridListEditor)view.Editor).Control is ASPxGridView) || view.Model == null || !(view.Model is IModelWebListViewExtender))
  59. return;
  60.  
  61. ASPxGridView gridView = (ASPxGridView)view.Editor.Control;
  62. gridView.Load += AdjustGridView;
  63. }
  64. }
  65. }

完成

扩展XAF模型信息实现自定义功能的更多相关文章

  1. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

  2. 《Programming WPF》翻译 第9章 3.自定义功能

    原文:<Programming WPF>翻译 第9章 3.自定义功能 一旦你挑选好一个基类,你将要为你的控件设计一个API.大部分WPF元素提供属性暴露了多数功能,事件,命令,因为他们从框 ...

  3. 【翻译】Tusdotnet中文文档(3)自定义功能和相关技术

    自定义功能和相关技术 本篇按照如下结构翻译 自定义功能 自定义数据仓库 相关技术 架构和总体概念 自定义数据仓库 tusdotnet附带一个存储库TusDiskStore,它将文件保存在磁盘上的一个目 ...

  4. 修改jumpserver源码并且实现一个自定义功能模块

    在前面已经说了,如何打开jumpserver的管理控制台并且自定义自己的数据模型.接下来实现一个自定义的功能模块. 先看效果! 一 定义好自己的模型(model) 1.1 这一块儿在前一篇博文已经讲过 ...

  5. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

  6. 系统右键自定义功能-右键备份【C#】

    平时在某些公司发布网站的时候,都是手动备份文件,以免发布错误,做回滚使用.频繁的发布,在做备份的时候也会稍稍浪费点时间.当然在一些大的公司都会有一些自动发布系统,就不会出现这种问题了,对这种问题,我做 ...

  7. Qt之模型/视图(自定义进度条)

    简述 在之前的章节中分享过关于QHeaderView表头排序.添加复选框等内容,相信大家模型/视图.自定义风格有了一定的了解,下面我们来分享一个更常用的内容-自定义进度条. 实现方式: 从QAbstr ...

  8. Yii创建前台和后台登录表单和通过扩展 CWebUser 增加信息到 Yii::app()->user

    我参考了这篇文章来构建项目的前台和后台的目录结构.感谢Andy的这篇文章.按照所有的步骤,您将有单独的前台和后台面板,如: http://localhost/index.php // 前台 http: ...

  9. asp.net mvc3 数据验证(二)——错误信息的自定义及其本地化

    原文:asp.net mvc3 数据验证(二)--错误信息的自定义及其本地化 一.自定义错误信息         在上一篇文章中所做的验证,在界面上提示的信息都是系统自带的,有些读起来比较生硬.比如: ...

随机推荐

  1. PHP 上传大文件

  2. copy module

    需求,当有一个实例a,我们需要一个新的实例b,b同a拥有相同的属性. 当我们使用a=b的模式的时候是一个赋值的过程.a和b指向同一个实例.b的任何操作都同a一样. 在这个使用需要使用copy模块.根据 ...

  3. chmod() has been disabled for security reasons

    最近用 codeigniter 写一个小系统,引用了session 库,codeigniter默认的session存储方式为files.鉴于安全性,文件即肯定涉及到权限问题. 在类 UNIX 操作系统 ...

  4. maven基础学习

    项目结构 src      -main           -java                -package      -test           -java               ...

  5. vim - multiple windows

    https://www.cs.oberlin.edu/~kuperman/help/vim/windows.html

  6. VirtualBox Win7 虚拟机 共享文件夹设置

    1.主机(Win10) 点击共享文件夹,例如D:\VMs\Sharefolder\,选择'属性->共享->共享',选择'Everyone',点击'添加',权限级别'读取/写入',然后一路点 ...

  7. [Android Tips] 10. Pull out /data/data/${package_name} files without root access

    #!/usr/bin/env bash PACKAGE_NAME=com.your.package DB_NAME=data.db rm -rf ${DB_NAME} adb shell " ...

  8. 使用Go开发HTTP中间件

    原文地址    再web开发的背景下,"中间件"通常意思是"包装原始应用并添加一些额外的功能的应用的一部分".这个概念似乎总是不被人理解,但是我认为中间件非常棒 ...

  9. Java条件编译

    学习过C语言或者C++语言的同学都知道它们支持条件编译,那么今天我们来学习下在Java语言中如何实现条件编译.Java语言本身没有提供条件编译,但是Java编译器对.java文件编译为.class文件 ...

  10. sql 遍历结果集

    declare @temp table ( [id] int IDENTITY(1,1), [Name] varchar(10) ) --select * from @temp declare @te ...