许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  PML GridControl怎么用?核心代码全解析

PML GridControl怎么用?核心代码全解析

阅读数 1641
点赞 0
article_banner

做PDMS二次开发时,想在PML里实现类似C#的复杂列表功能怎么办?普通LIST控件显然不够用。这时候AVEVA封装的内置GridControl就是最佳选择。虽然它底层是C#控件,交互逻辑相对复杂,但只要掌握了正确的调用姿势,就能轻松搞定数据展示和事件绑定。下面我结合实战经验,把这套控件的核心代码拆解开来。

窗体定义与控件句柄绑定

要让GridControl跑起来,前置条件绝对不能漏。第一步必须把DLL加载到内存里,敲入 import 'GridControl'import 'Aveva.Pdms.DataManagement.PML'。在定义窗体(FRAME)时,建议用一个Frame把它包裹起来,并且加上命名空间 using namespace 'Aveva.Pdms.Presentation'。因为它是C#控件,对象类型必须声明为CONTAINER,比如 CONTAINER .conPipeGrid pmlnetControl

最关键的一步是在构造函数里绑定句柄。你需要实例化一个NetGridControl对象,然后通过 .Control = !this.pipeGrid.handle() 将其赋值给容器。这是打通PML与C#交互的桥梁,少写一行都会导致界面空白。

数据源绑定与事件委托机制

控件有了,接下来就是灌入数据。表头必须是一个一维数组(比如Name、Sex),内容则必须是一个二维数组。你可以手写数据,也可以直接读取Excel文件。组装好数据后,创建一个NetDataSource对象,再调用 BindToDataSource(!nds) 方法,表格瞬间就有内容了。

静态展示还不够,GridControl同样支持丰富的事件交互,这主要通过委托来实现。比如想加个右键菜单,先定义好MENU,然后用 AddEventHandler('OnPopup', ...) 绑定触发器。当用户右键点击时,系统会传回一个包含坐标信息的数组,你在对应的方法里调用 ShowPopup 就能弹出菜单。同理,使用 AfterSelectChange 可以捕获用户的选中动作,返回的下标是从0开始的行号数组,单选模式下永远只有一个元素。

属性配置与常用操作方法

想要表格看起来更专业,可以通过属性进行微调。开启 ColumnExcelFilter(true) 能让表头自带筛选下拉框;如果不想让表头跟着滚动,设置 FixedHeaders(true) 即可。底部的行数汇总、分组排序以及单选/多选模式,也都有对应的布尔值开关。

在实际操作中,获取和修改数据的API也非常直观。想知道当前选了哪几行?调用 getSelectedRows() 直接返回二维数组;想拿某个单元格的值,用 getCell(row, column) 就行。如果需要动态改变某一列的宽度,或者给特定单元格塞一张图片,分别调用 SetColumnWidthsetCellImage 方法。最后,如果想清空整个表格或者一键导出Excel报表,ClearGrid()SaveGridToExcel(FILE file) 这两个操作指令能帮你省去大量的底层处理工作。

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空