【C#开发案例】点击菜单按钮 跳转 百度一下原创
4人赞赏了该文章
20次浏览
编辑于2024年12月23日 10:11:58
摘要由AI智能服务提供
本文介绍了通过点击单据上的菜单项,打开一个新窗体并跳转到指定URL地址的方法。以采购订单为例,添加了一个名为“打开Url”的分录菜单,点击后可携带当前选中物料编码跳转到百度。实现步骤包括扩展采购订单、编写单据插件(提供C#和Python两种代码实现)。
有用
反馈
一、应用场景
通过点击单据上的主菜单或分录菜单,打开一个新的窗体,跳转到指定的URL地址。
二、案例演示
在采购订单的明细信息单据体中,添加分录菜单【打开Url】。点击该菜单后携带明细分录中的当前选中行中的物料编码,跳转到百度。
三、实现步骤
1. 扩展采购订单
- 打开采购订单,扩展采购订单,给明细单据体的分录菜单添加一个菜单【打开Url】:tbOpenUrl
2. 编写单据插件
- 实现菜单跳转URL功能(以下分别提供C#代码和Python代码,实际应用中使用任意一种即可)
方法一:C#代码
using Kingdee.BOS.Core.Bill.PlugIn; // 引入单据插件的核心库 using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; // 引入动态表单插件参数库 using Kingdee.BOS.JSON; // 引入 JSON 处理库 using Kingdee.BOS.Orm.DataEntity; // 引入数据实体库 using Kingdee.BOS.Util; // 引入工具库 using System.ComponentModel; // 引入组件模型库 namespace Jac.XkDemo.BOS.Business.PlugIn // 定义命名空间 { /// <summary> /// 【单据插件】点击菜单打开超链接 /// </summary> [Description("【单据插件】点击菜单打开超链接"), HotUpdate] // 插件描述和热更新属性 public class ClickMenuAndOpenUrlBillPlugIn : AbstractBillPlugIn // 继承自 AbstractBillPlugIn { /// <summary> /// 主菜单点击事件 /// </summary> /// <param name="e">事件参数</param> public override void BarItemClick(BarItemClickEventArgs e) // 重写主菜单点击事件 { base.BarItemClick(e); // 调用基类的点击事件处理 if (e.BarItemKey.EqualsIgnoreCase("tbOpenUrl")) // 检查点击的菜单项是否为 "tbOpenUrl" { var materialNumber = string.Empty; // 初始化物料编码变量 // 获取分录当前选中行 var entryRowIndex = this.Model.GetEntryCurrentRowIndex("FPOOrderEntry"); // 获取当前选中行的索引 if (entryRowIndex >= 0) // 检查是否有有效的行索引 { // 获取分录当前选中行中的物料数据包 var material = (DynamicObject)this.Model.GetValue("FMaterialId", entryRowIndex); // 获取选中行的物料对象 if (material != null) // 检查物料对象是否不为空 { // 获取分录当前选中行中的物料的编码 materialNumber = material["Number"].ToString(); // 获取物料编码 } } // 生成Url地址 var url = "http://www.baidu.com/?code=" + materialNumber; // 创建带有物料编码的 URL // 方式一 // 直接打开浏览器并跳转到此Url地址 // ViewCommonAction.ShowWebURL(this.View, url); // this.View.SendDynamicFormAction(this.View); // 方式二:弹窗打开Url地址 var webobj = new JSONObject(); // 创建一个 JSON 对象 webobj["source"] = url; // 设置 URL 源 webobj["height"] = 600; // 设置弹窗高度 webobj["width"] = 800; // 设置弹窗宽度 webobj["isweb"] = true; // 是否新弹出一个浏览器窗口(或选项卡)打开网页地址 webobj["title"] = "百度一下"; // 设置弹窗标题 this.View.AddAction("ShowKDWebbrowseForm", webobj); // 添加打开网页的动作 this.View.SendDynamicFormAction(this.View); // 发送动态表单动作 } } } }
方法二:Python代码
from Kingdee.BOS.JSON import * # 引入 JSON 处理库 def EntryBarItemClick(e): # 定义分录菜单点击事件处理函数 if (e.BarItemKey == "tbOpenUrl2"): # 检查点击的菜单项是否为 "tbOpenUrl2" # 获取当前选中行的索引 rowIndex = this.Model.GetEntryCurrentRowIndex("FPOOrderEntry") # 获取选中行中的物料数据包 material = this.Model.GetValue("FMaterialId", rowIndex) # 获取物料编码并转换为字符串 materialNumber = material["Number"].ToString() # 生成带有物料编码的 URL url = "http://www.baidu.com?from=py&code=" + materialNumber # 创建一个 JSON 对象 webobj = JSONObject() # 设置 JSON 对象的属性 webobj["source"] = url # 设置 URL 源 webobj["height"] = 600 # 设置弹窗高度 webobj["width"] = 800 # 设置弹窗宽度 webobj["isweb"] = True # 是否新弹出一个浏览器窗口(或选项卡)打开网页地址 webobj["title"] = "百度一下" # 设置弹窗标题 # 添加打开网页的动作 this.View.AddAction("ShowKDWebbrowseForm", webobj) # 发送动态表单动作 this.View.SendDynamicFormAction(this.View)
3. 注册单据插件
- 保存元数据(以下分别提供C#插件注册方法和Python插件注册方法,实际应用中使用任意一种即可)。
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读