AL语言扩展控制项开发指南:创建自定义UI组件与交互
AL语言扩展控制项开发指南创建自定义UI组件与交互【免费下载链接】ALHome of the Dynamics 365 Business Central AL Language extension for Visual Studio Code. Used to track issues regarding the latest version of the AL compiler and developer tools available in the Visual Studio Code Marketplace or as part of the AL Developer Preview builds for Dynamics 365 Business Central.项目地址: https://gitcode.com/gh_mirrors/al/ALAL语言扩展控制项是Dynamics 365 Business Central开发中的强大工具它允许开发者创建丰富的自定义用户界面组件和交互体验。本指南将带你了解如何从零开始构建功能完备的AL控制项掌握UI组件设计与数据交互的核心技巧让你的Business Central解决方案更加专业和用户友好。控制项开发基础理解AL扩展架构AL控制项Control Add-in是一种特殊的扩展类型它能够将Web技术HTML、CSS、JavaScript与AL代码无缝集成为Business Central页面提供高度定制化的UI元素。在项目的samples/ControlAddIn目录中你可以找到完整的控制项示例包括基础架构和交互逻辑。控制项开发主要涉及三个核心部分控制项定义.al文件声明控制项的属性、方法和事件前端资源JS/CSS文件实现UI渲染和客户端逻辑页面集成在AL页面中引用并使用控制项控制项定义文件结构解析控制项的定义文件通常位于项目的controladdin目录下例如samples/ControlAddIn/al/controladdin/AddIn.al。一个基础的控制项定义包含以下关键元素controladdin TestAddIn { Scripts https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-debug.js, ./js/main.js; StartupScript js/startup.js; StyleSheets css/skins.css; Images ./images/logo.png; RequestedHeight 500; MinimumHeight 500; VerticalShrink false; HorizontalStretch true; procedure CallJavaScript(i : integer; s: text; d : decimal; c : char); event Callback(i : integer; s: text; d : decimal; c : char); }在这个定义中我们声明了控制项所需的外部脚本、样式表、图片资源定义了控制项的尺寸属性以及AL与JavaScript之间的通信接口过程和事件。构建UI组件从设计到实现创建控制项的UI组件需要结合AL定义和前端技术。一个典型的控制项UI实现包含HTML结构、CSS样式和JavaScript逻辑这些文件通常存放在项目的js和css目录中。控制项前端资源组织在samples/ControlAddIn示例中前端资源的组织结构如下js/main.js控制项的主要逻辑实现js/startup.js控制项初始化脚本css/skins.css控制项样式定义images/logo.png控制项使用的图片资源这种组织方式确保了代码的模块化和可维护性是AL控制项开发的推荐实践。设计响应式控制项界面控制项的界面设计需要考虑Business Central的各种显示环境确保在不同尺寸的屏幕上都能提供良好的用户体验。通过设置控制项的尺寸属性可以实现响应式布局RequestedHeight 500; MinimumHeight 500; VerticalShrink false; HorizontalStretch true;这些属性定义了控制项的初始高度、最小高度以及是否允许垂直收缩和水平拉伸使控制项能够适应不同的页面布局需求。实现交互逻辑AL与JavaScript通信控制项的核心价值在于实现AL代码与前端之间的双向通信。通过定义过程Procedures和事件Events可以在AL和JavaScript之间传递数据和触发操作。从AL调用JavaScript方法在控制项定义中声明的过程可以从AL代码中调用用于向JavaScript传递数据或触发前端操作。例如在PageWithAddIn.al中我们可以看到如何调用控制项的方法action(CallJavaScript) { trigger OnAction(); begin CurrPage.ControlName.CallJavaScript(5, text, 6.3, c); end; }这段代码定义了一个页面操作当用户点击该操作时会调用控制项的CallJavaScript方法并传递四个不同类型的参数。从JavaScript触发AL事件控制项还可以通过事件将数据从JavaScript传递回AL代码。在控制项定义中声明事件event Callback(i : integer; s: text; d : decimal; c : char);然后在JavaScript中触发该事件Microsoft.Dynamics.NAV.InvokeExtensibilityMethod(Callback, [i, s, d, c]);在页面中我们可以为这个事件编写处理逻辑trigger Callback(i : integer; s: text; d : decimal; c : char) begin Message(Got from js: %1, %2, %3, %4, i, s, d, c); end;这种双向通信机制使得控制项能够响应用户交互并与Business Central的数据进行实时交互。控制项集成与测试提升开发效率开发AL控制项时有效的集成和测试方法可以显著提升开发效率。AL Explorer提供了强大的对象管理功能可以帮助你快速定位和测试控制项相关的页面和代码单元。使用AL Explorer管理控制项对象AL Explorer是Visual Studio Code中AL语言扩展的重要功能它提供了直观的界面来管理和浏览Business Central对象。通过AL Explorer你可以轻松找到控制项相关的页面、代码单元和其他对象方便进行集成测试。AL Explorer的筛选和分组功能可以帮助你快速定位控制项相关的对象特别是在大型项目中这一功能尤为重要。控制项测试策略控制项开发推荐采用以下测试策略单独测试前端逻辑使用模拟数据测试JavaScript功能测试AL与JavaScript通信验证参数传递和事件触发集成测试在实际页面中测试控制项的整体行为跨环境测试确保控制项在不同环境中正常工作项目中的samples/ControlAddIn提供了完整的测试示例包括测试页面和辅助代码单元可以作为测试策略的参考。进阶技巧打造专业级控制项要创建真正专业的AL控制项还需要掌握一些进阶技巧包括性能优化、错误处理和代码组织等方面。控制项性能优化大型控制项可能会影响页面加载速度和响应性能以下是一些优化建议最小化外部脚本依赖优化JavaScript代码避免不必要的DOM操作使用延迟加载技术加载非关键资源合理设置控制项的尺寸属性避免不必要的重绘代码复用与模块化为了提高代码的可维护性和复用性建议采用模块化的开发方式将复杂逻辑封装在代码单元中如AddInHelpers.al使用单例模式管理全局资源如AddInHelpersSingleton.al分离UI逻辑和业务逻辑提高代码清晰度处理边缘情况专业的控制项需要妥善处理各种边缘情况网络错误处理脚本加载失败的情况参数验证在AL和JavaScript中都进行参数验证内存管理避免内存泄漏特别是在频繁更新的控制项中兼容性处理确保控制项在不同版本的Business Central中都能正常工作总结开启AL控制项开发之旅AL语言扩展控制项为Dynamics 365 Business Central带来了无限的UI定制可能。通过本指南你已经了解了控制项开发的基础知识、UI设计、交互实现和测试策略。现在你可以开始创建自己的控制项为Business Central解决方案增添专业的自定义UI组件。要开始你的AL控制项开发之旅只需克隆项目仓库git clone https://gitcode.com/gh_mirrors/al/AL探索samples目录中的示例代码特别是ControlAddIn和ControlAddInHighCharts这些示例提供了丰富的控制项实现方案可以作为你开发的起点。祝你在AL控制项开发的道路上取得成功【免费下载链接】ALHome of the Dynamics 365 Business Central AL Language extension for Visual Studio Code. Used to track issues regarding the latest version of the AL compiler and developer tools available in the Visual Studio Code Marketplace or as part of the AL Developer Preview builds for Dynamics 365 Business Central.项目地址: https://gitcode.com/gh_mirrors/al/AL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

co-wechat-api单元测试教程:确保微信API调用的稳定性与可靠性

co-wechat-api单元测试教程:确保微信API调用的稳定性与可靠性

co-wechat-api单元测试教程:确保微信API调用的稳定性与可靠性 【免费下载链接】co-wechat-api Wechat API. Support Async Functions 项目地址: https://gitcode.com/gh_mirrors/co/co-wechat-api 想要确保你的微信公众平台应用稳定运行吗?co-wec…

2026/10/18 2:02:53 阅读更多 →
大学生暑假两个月,怎么系统提升AI能力?

大学生暑假两个月,怎么系统提升AI能力?

在AI全面渗透职场的背景下,大学生暑期不再仅依靠兼职、刷题提升自我,系统化掌握AI应用能力,已经成为应届生求职的通用加分项。根据2026年高校就业数据统计,具备AI落地应用能力的应届生,简历通过率较普通应届生高出41%&…

2026/10/18 2:03:11 阅读更多 →
PostgreSQL 存储过程终极静态分析工具:plpgsql_check 完全指南

PostgreSQL 存储过程终极静态分析工具:plpgsql_check 完全指南

PostgreSQL 存储过程终极静态分析工具:plpgsql_check 完全指南 【免费下载链接】plpgsql_check plpgsql_check is a linter tool (does source code static analyze) for the PostgreSQL language plpgsql (the native language for PostgreSQL store procedures). …

2026/10/17 8:28:40 阅读更多 →

最新新闻

HRNet人体姿态估计原理与工业部署实战指南

HRNet人体姿态估计原理与工业部署实战指南

简介:本资源为HRNet人体姿态检测模型的轻量级开源实现代码包,面向计算机视觉方向的开发者、算法工程师及深度学习初学者,解决高精度关键点定位与多尺度特征融合建模问题,适用于视频监控、人机交互、虚拟现实等实际场景。压缩包共3…

2026/10/18 17:47:45 阅读更多 →
知识图谱标注工具源码深度解析:SPO三元组标注与数据质量实践

知识图谱标注工具源码深度解析:SPO三元组标注与数据质量实践

简介:一款基于 Python3 的本地化知识图谱标注工具源码,面向知识图谱构建、NLP 工程与算法研究人员,用于解决文本中命名实体和关系的高效联合标注问题。工具通过自定义快捷键和背景色区分实体与关系类型,支持撤销、取消标注及文本格…

2026/10/18 17:47:45 阅读更多 →
力扣排序题全攻略:快排、归并、TopK与高频套路详解

力扣排序题全攻略:快排、归并、TopK与高频套路详解

排序题目在力扣里属于那种“看起来谁都会,一写就出问题”的类型。很多人刷题第一站就是排序,觉得无非就是调个sort()函数,但真到了面试手撕快排、或者遇到“逆序对”“合并区间”这类披着排序外衣的题,才意识到自己对排序的理解只…

2026/10/18 17:47:45 阅读更多 →
图像处理与计算机视觉技术综述:从PPT大纲到可复现基线

图像处理与计算机视觉技术综述:从PPT大纲到可复现基线

简介:这份PPT面向计算机、人工智能方向的初学者与进阶学习者,系统梳理图像处理与计算机视觉的基础概念、发展脉络与技术构成,帮助读者建立从二维图像分析到三维场景理解的完整知识框架。资源包内含1个PPT文件,约1.55MB&#xff0c…

2026/10/18 17:47:45 阅读更多 →
Redis分布式锁与秒杀削峰:从抢单超卖到异步落库的工程实践

Redis分布式锁与秒杀削峰:从抢单超卖到异步落库的工程实践

简介:在电商秒杀、限时抢购等场景下,库存超卖和并发一致性问题一直是后端开发的重点。一个基于SpringBoot的Redis分布式锁抢单秒杀项目,面向具备Java基础、希望掌握高并发处理与分布式锁原理的开发者,完整演示了从加锁扣库存到返回…

2026/10/18 17:47:45 阅读更多 →
FTP主动/被动模式全解析:原理、配置与数据连接故障排查

FTP主动/被动模式全解析:原理、配置与数据连接故障排查

你在某台Linux服务器上搭好了FTP服务,把账号密码发给同事,结果对方用FileZilla连上来,登录倒是正常,目录列表却一直转圈圈,最后弹出一句“无法打开数据连接”。这样的问题我排查过太多次,几乎所有初次接触F…

2026/10/18 17:46:45 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →