XAF之显示并编辑包含nonpersistent的ListView

XAF的ListView中控制部分行的可编辑性的方法 场景 在自定义的 PopupWindow 中包含了一个允许编辑的 ListView ,但是对于特定的某些数据(在界面呈现为某些行)不允许进行编辑。例如: ListView 呈现了某个业务类( BusinessObjects ) 的所有成员——使用其 Caption 表示。并且使用勾选框来决定某个成员在其业务类所对应的 ListView 中显示与否。其中必填字段是必须显示的,因此不能够对其进行编辑。 如图所示,客户编号和客户名称是必填字段,因此不能编辑。等级和描述是选填的,因此可以编辑。 实现思路 使用条件 阅读详情

          目标:在弹出窗口中显示一个ListView,该ListView包含的是nonpersistent Objects,且这些objects包含了简单类型,引用类型和集合类型。

具体描述:点击一个action,弹出一个LIstView,该ListView包含了父亲Parent列表,点击Parent的children可以选择其child。

效果图:


1.创建Parent为nonPersistent类。注意DataSourcePropery特性和XPCollection的getter中的构造函数,还有重写了Child的ToString方法

[NonPersistent]
    public class Parent : XPObject
    {
        private static int myId = 0;
        public Parent(Session session)
            : base(session)
        {
            Oid = myId++;
        }
        public string Name
        {
            get { return GetPropertyValue<string>("Name"); }
            set { SetPropertyValue<string>("Name", value); }
        }
        [DataSourceProperty("Children")]
        public Child MyChild
        {
            get { return GetPropertyValue<Child>("MyChild"); }
            set { SetPropertyValue<Child>("MyChild", value); }
        }
        private XPCollection<Child> _children;
        public XPCollection<Child> Children
        {
            get 
            {
                if (_children == null)
                    _children = new XPCollection<Child>(Session,false);
                return _children;
            }
        }
    }
    [NonPersistent]
    public class Child : XPObject
    {
        private static int myId = 0;
        public Child(Session session)
            : base(session)
        {
            Oid = myId++;
        }
        public string ChildName
        {
            get { return GetPropertyValue<string>("ChildName"); }
            set { SetPropertyValue<string>("ChildName", value); }
        }
        public override string ToString()
        {
            return ChildName;
        }
    }
2.建立ViewController,添加PopupWindowAction
public partial class ViewController1 : ViewController
    {
        public ViewController1()
        {
            InitializeComponent();
            RegisterActions(components);
        }

        private void popupWindowShowAction1_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e)
        {
            IObjectSpace objectspace = ObjectSpaceInMemory.CreateNew();
            CollectionSource cs = new CollectionSource(objectspace, typeof(Parent));
            for (int i = 0; i < 5; i++)
            {
                Parent parent = objectspace.CreateObject<Parent>();
                Child son = objectspace.CreateObject<Child>();
                son.ChildName = "kid" + i;
                Child son2 = objectspace.CreateObject<Child>();
                son2.ChildName = "kid__" + i;
                parent.Children.Add(son);
                parent.Children.Add(son2);
                parent.MyChild = son2;
                parent.Name = "father" + i;
                cs.Add(parent);
            }
            ListView view = Application.CreateListView(Application.FindListViewId(typeof(Parent)), cs, false);
            view.Editor.AllowEdit = true;
            e.View = view;
            e.DialogController.SaveOnAccept = true;
            
        }

        private void popupWindowShowAction1_Execute(object sender, PopupWindowShowActionExecuteEventArgs e)
        {
            XPCollection list = (XPCollection)((ListView)e.PopupWindow.View).CollectionSource.List;
            foreach (Parent it in list)
            {
                Console.WriteLine("------\nFather[{0}]'s son is [{1}]", it.Name, it.MyChild);
                Console.WriteLine("below is [{0}]'s all children", it.Name);
                foreach (Child it2 in it.Children)
                {
                    Console.WriteLine("Name:{0}", it2.ChildName);
                }
                Console.WriteLine("----\n");
            }
        }

    }

在popupWindowShowAction_Execute方法中为获取弹出窗口变量的方法。下面是输出结果:

------
Father[father0]'s son is [kid0]
below is [father0]'s all children
Name:kid0
Name:kid__0
----


------
Father[father1]'s son is [kid__1]
below is [father1]'s all children
Name:kid1
Name:kid__1
----


------
Father[father2]'s son is [kid__2]
below is [father2]'s all children
Name:kid2
Name:kid__2
----


------
Father[father3]'s son is [kid__3]
below is [father3]'s all children
Name:kid3
Name:kid__3
----


------
Father[John]'s son is [kid4]
below is [John]'s all children
Name:kid4
Name:kid__4
----

Android PopupWindow的简单说明 PopupWindow 阅读详情

相关推荐

Shopee滑块验证码太刁钻?手把手教你用Python+Playwright绕过弧形验证(附影刀RPA接入代码)

本文详细介绍了如何使用Python和Playwright结合SadCaptcha第三方服务高效破解Shopee平台的弧形滑块验证码,并集成到影刀RPA工作流中。该方案开发周期短、准确率高(>90%),特别适合跨境电商自动化操作,已在实际项目中验证成功。

weixin_29284657的博客 567

XAF-如何在详细视图界面显示按钮(含示例项目下载)

默认情况下,指定了按钮的Category后,将在对应的按钮容器显示按钮。有时候,我们需要将按钮显示在详细视图中。 本示例源码 创建一个控制器,并填加按钮。设置好了所有ID、Caption后,给Category设置一个值如:"MyCategory",这是你取的名字。不用管这个category是否存在。 打开xafml设置,这个示例中是打开公用的那个Module项目中的xafml. 找...

weixin_30667301的博客 293

基于 YOLO + SAM 的自动图像标注实战

摘要: 本文提出一种基于YOLO检测和SAM分割的自动化数据标注流水线方案,通过YOLO定位目标并生成检测框,再以检测框为提示驱动SAM完成精细分割,最终输出YOLO格式的标注文件。该方案将人工标注升级为半自动流程,显著提升标注效率,尤其适用于多类别、大规模图像的实例级标注需求。代码模块化设计支持模型灵活替换,并集成异常处理与进度可视化功能。虽依赖YOLO检测质量且对小目标存在局限,但作为工程落地方案,可有效降低私有数据集构建成本,适用于工业检测、遥感等场景的冷启动标注。

qq_64366203的博客 1144

XAF之在ListView中显示NonPersistent Object

我前一篇文章“XAF之 未解决——无法显示包含nonpersistent对象的ListView”,在数日的搜索下终于解决了,中间还遇到DEV网站维护的苦苦等待,最终还是发现了问题所在,我使用的dev版本是2.5,而在该版本中无法在ListView或DetailView中显示Nonpersistent 对象,会抛出空指针异常,后来我尝试升级到2.11版本,问题不存在了,几天几夜的苦恼终于找到了结

压碎起重机 1830

鸿蒙设备部署轻量级Web服务器NexServer实践

Web服务器作为互联网基础设施的核心组件,其轻量化部署在移动终端领域具有重要实践价值。本文以鸿蒙操作系统为技术载体,深入解析微内核架构如何通过资源隔离和分布式软总线实现服务高可用。重点探讨NexServer这一专为嵌入式场景设计的轻量级服务器,其ARM原生支持特性与15MB级内存占用,在HTTP/2协议处理与WebSocket通信中展现出独特优势。在智能家居控制面板、边缘计算节点等物联网典型场景中,鸿蒙设备结合NexServer的方案相比传统Nginx部署可降低60%资源消耗。通过实测数据对比,该组合在50

weixin_30411239的博客 481

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

XAF 字符串属性ComboBox的数据源DataSourcePropertyAttribute提供动态选择的键和值

privatestring_ActionId;[DataSourceProperty("list")][Custom("PropertyEditorType","MemberLevelSecurityDemo.Module.WinStringArrayValueComboPropertyEditor")]publicst...

weixin_30445169的博客 230

高分系列卫星轨道、传感器参数等信息

遥感卫星数据简介-高分系列

中遥科 3309

XAF之 未解决——无法显示包含nonpersistent对象的ListView

当尝试在ListView中显示NonPersistent Obejct时,会报告objectKeyAsString参数为null,显示一个红色大叉。 查看输出如下: 15.05.12 10:50:47.201 ->GetPopupWindowParams 15.05.12 10:50:47.202 Type: DevExpress.ExpressApp.Actions.PopupWi

压碎起重机 1593

高通9008模式隐藏技巧:不拆机用ADB命令+Diag协议进入EDL

本文深入解析高通EDL模式(紧急下载模式)的技术原理与实战应用,详细介绍了通过ADB命令和Diag协议无需拆机进入EDL的方法。涵盖硬件/软件触发方案、跨平台工具配置、Firehose协议解析及设备救砖流程,为开发者提供从基础到进阶的完整指南。

weixin_29191761的博客 1125

学Simulink——基于风力发电系统的建模与仿真场景:基于自适应控制的风力发电系统输出功率调节

本文详细介绍了使用Simulink搭建风力发电系统自适应控制模型的完整流程。首先阐述了风速波动对电网的影响及自适应控制的优势,然后逐步指导创建Simulink项目、搭建系统结构(包括风速源、风轮机、发电机等模块),重点讲解了模型参考自适应控制器(MRAC)的设计步骤和参数设置方法。通过仿真分析验证了系统在风速变化时仍能保持输出功率稳定,展示了自适应控制的响应速度和鲁棒性。最后提出了引入深度学习预测、多变量控制等优化方向,为新能源领域工程师提供了实用的建模与仿真指导。

amy_mhd的博客 220

XAF 字符串属性ComboBox的数据源DataSourcePropertyAttribute提供动态选择的值

1.Code namespaceMemberLevelSecurityDemo.Module{#region"Copyright(c)2007to2010ExtrasoftLtd"////********************************************************************//T...

weixin_30404405的博客 154

【RT-DETR涨点改进】全网独家首发、特征融合改进篇 | AAAI 2026 | 引入CDEM交叉动态增强模块,双向引导和融合,在低光图像增强中有效提升了图像的亮度,提升小目标和暗目标的检测准确率

本文提出了一种基于CDEM(交叉动态增强模块)改进的rtdetr网络模型,有效提升了在低光和复杂环境下的目标检测性能。CDEM模块通过动态增强亮度与色彩特征,改善图像输入质量,增强细节和对比度。该模块具有轻量级结构,易于集成到现有模型中,能够显著提升小目标和暗目标的检测准确率与鲁棒性。文章详细介绍了CDEM模块的结构原理、实现方法,并提供了完整的代码实现和配置指南,包括三种改进版本的YAML配置文件。实验结果表明,该方法在图像增强和目标检测任务中均取得了优异性能。

Ai缝合怪、助力小伙伴高效发论文 143

Demo学习:XAF左侧菜单程序

XCRM的菜单呈现如图所示修改位置 如图所示 修改位置 在Model.DesignedDiffs.xafml中: 对应的xml代码 <NavigationItems GenerateRelatedReportsGroup="True" RelatedViewVariantsGroupCaption="Views" GenerateRelatedViewVariantsGroup="True" StartupNavigationItem="CRMLead_ListView"> <

池塘 702

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

XAF 如何显示非持久类数据列表

How to: Invoke a List View for a Non-Persistent Class http://www.devexpress.com/Support/Center/e/E980.aspx?searchtext=View 欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/ 转载于:https://www.cnblogs...

weixin_30764771的博客 246

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

XAF:启用就地编辑

官方文档:https://docs.devexpress.com/eXpressAppFramework/113249/concepts/ui-construction/views/list-view-edit-modes 下面是官方关于Winform的说明: In a WinForms XAF application, an existing object can be edited by selecting a row and clicking the property cell, and a new

池塘 539

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

XAF将ListView和DetailView一起显示

在WinForm程序中,有时需要将ListView和DetailView一起显示,并且可控制是否显示DetailView如下图: 下面简述步骤: 1.创建BO类TestObject1,包含以下几个属性,省略了setter和getter: public string Name { //... } } public

压碎起重机 2176

XAF 如何实现两个ListView联动

例如:有部门和员工两个ListView 1. 首先用模型编辑器添加一个DashboardView1 2. 然后再给DashboardView1添加两个Item:Department_ListView 和 Employee_ListView; 3. 代码 usingSystem;usingDevExpress.ExpressApp;usingDevEx...

weixin_30952103的博客 256

XAF 如何切换ListView的显示模式:MasterDetail 和 Only LisVeiw

usingSystem;usingDevExpress.ExpressApp;usingDevExpress.ExpressApp.Actions;usingDevExpress.ExpressApp.Model;namespaceXafExtendTest.Module{publicpartialclassSwitchMasterDetailViewContro...

weixin_30599769的博客 201

xaf框架中web项目弹出提示框

//在Controllers文件夹下添加一个TestController.cs文件。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using DevExpress.Xpo; using DevExpress.ExpressApp; using DevExpress.Exp

寒枫 1929

XAF中如何制作弹出窗体选择数据到ListView列表

1.问题: 有多对对关系对象,想为从对象选择数据录入从别的相关对象。 2.实现思路:    A.弹出选择窗体,从中选出所需记录 B.将A和B组合为从对象,保存 C.修改主从对象列表为可编辑(在View 中Item_Detail_ListView设置为可编辑) 3.代码实现 publicpartialclassMP...

weixin_30727835的博客 324

弹出窗口的两种实现方式 PopupWindow 和 Activity

本人小菜一个。目前只见过两种弹出框的实现方式,第一种是最常见的PopupWindow,第二种也就是Activity的方式是前几天才见识过。感觉很霸气哦。没想到,activity也可以做伪窗口。 先贴上最常见的方法,主要讲activity的方法。 一、弹出PopupWindow 1 /** 2 * 弹出menu菜单 3 */...

weixin_30265171的博客 413

PopUpWindow使用详解(二)——进阶及答疑

前言:有人问我,即便梦想成真了又能怎样,或许不能怎样,但这是梦想。 相关文章:1、《PopUpWindow使用详解(一)——基本使用》2、《PopUpWindow使用详解(二)——进阶及答疑》 上篇为大家基本讲述了有关PopupWindow的基本使用,但还有几个相关函数还没有讲述,我们这篇将着重看看这几个函数的用法并结合源码来讲讲具体原因,最后是有关PopupWindow在使用时的疑...

启舰 3万+

自定义弹框一(PopupWindow实现) 响应两种点击事件

自定义弹框通常可以使用 自定义的popupwindow,自定义的activity,自定义的dialog来实现  这里先用popupwindow来实现 并且可以在弹框上实现点击事件 或者在其所依附的activity上响应  其实都是一样的  但是如果点击弹框想在activity上处理事件 这种就比较简单了 避免了使用接口对接 第一种    在弹框上响应点击事件     先准备资源文件 aler

idcrim的博客 1万+
上一篇: XAF之在ListView中显示NonPersistent Object
下一篇: XAF之自定义Function Criteria Operator
qjpcpu
博客等级 码龄15年 59粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值