二开案例.单据插件.表格单元格打开超链接
【应用场景】表格单元格中的文本内容是网址,将其显示成超链接样式,且在点击单元格时,直接打开默认浏览器,跳转到指定链接。
【案例演示】采购订单,明细信息单据体,添加基础资料属性字段【淘宝链接】,引用物料的某个文本字段(该字段存放的是网址),将【淘宝链接】字段显示成超链接样式,且点击链接时直接打开默认浏览器,跳转到指定链接。
【实现步骤】
<1>编写单据插件,代码如下。
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【单据插件】表格单元格打开超链接
/// </summary>
[Description("【单据插件】表格单元格打开超链接"), HotUpdate]
public class ClickGridCellAndOpenUrlBillPlugIn : AbstractBillPlugIn
{
public override void EntryButtonCellClick(EntryButtonCellClickEventArgs e)
{
base.EntryButtonCellClick(e);
//
if (e.Row < 0)
{
return;
}
if (!e.FieldKey.EqualsIgnoreCase("F_Jac_BaseProperty"))
{
return;
}
var material = this.Model.GetValue("FMaterialId") as DynamicObject;
if (material == null || material["F_Jac_Text"] == null)
{
return;
}
// 生成Url地址
var url = material["F_Jac_Text"].ToString();
if (String.IsNullOrWhiteSpace(url))
{
// 超链接不存在
return;
}
// 方式一:直接打开Url地址
this.View.AddAction("ShowWebURL", url);
// 方式二:弹窗打开Url地址
//var webobj = new JSONObject();
//webobj["source"] = url;
//webobj["height"] = 600;
//webobj["width"] = 800;
//webobj["isweb"] = true; // true弹窗默认浏览器,false弹窗动态表单外壳
//webobj["title"] = "百度一下";
//this.View.AddAction("ShowKDWebbrowseForm", webobj);
//this.View.SendDynamicFormAction(this.View);
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展物料[BD_MATERIAL],添加文本字段用于存储网址,保存元数据,如下图所示。
<4>BOSIDE扩展采购订单,选择明细信息单据体的物料编码字段,增加引用属性,新增基础资料属性字段,字段名称改为淘宝链接,设置字段的【列表显示控件】属性值为链接,【单据应用列表显示控件】属性值为勾选,注册表单插件,保存元数据,开发完毕。
如果使用Python插件,注册方式如下图所示。
#【Python】【单据插件】表格单元格打开超链接
import clr
clr.AddReference('mscorlib')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS.JSON import *
from Kingdee.BOS.Util import *
from System import *
def EntryButtonCellClick(e):
if (e.Row < 0):
return
if (not e.FieldKey.Equals("F_Jac_BaseProperty", StringComparison.OrdinalIgnoreCase)):
return
material = this.Model.GetValue("FMaterialId")
if (material == None and material["F_Jac_Text"] == None):
return
# 生成Url地址
url = material["F_Jac_Text"].ToString()+"?rowId="+e.Row.ToString()
if (String.IsNullOrWhiteSpace(url)):
return
# 方式一:直接打开Url地址
#this.View.AddAction("ShowWebURL", url)
# 方式二:弹窗打开Url地址
webobj = JSONObject()
webobj["source"] = url
webobj["height"] = 600
webobj["width"] = 800
webobj["isweb"] = True
webobj["title"] = "百度一下"
this.View.AddAction("ShowKDWebbrowseForm", webobj)
this.View.SendDynamicFormAction(this.View)
现在可以登录业务站点,打开采购订单,检验一下插件的控制效果啦。
【参考资料】
【二开案例.列表插件.列表单元格打开超链接】https://vip.kingdee.com/article/119518983761507840
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.单据插件.表格单元格打开超链接
本文2024-09-23 04:20:55发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164724.html