金蝶云星空系统插件样例集锦
一、日期/可编辑下拉字段禁用鼠标中间滑轮作用触发时间/值的改变
1、描述:日期字段默认开启鼠标中间滑轮作用时间的改变,大多用户需求习惯,插件可关闭该作用
2、python插件:
def AfterBindData(e): this.View.GetControl("FDate").SetCustomPropertyValue("AllowSpinOnMouseWheel", False);
.net插件:
this.View.GetControl("FDate").SetCustomPropertyValue("AllowSpinOnMouseWheel", false);
注:日期,可编辑下拉字段写法一致
二、列表列开启tooltip提示功能
1、描述:列表由于行高问题,基于大数据性能考虑,根据内容不支持自动换行显示全部,这时需要用tooltip来完成这一场场景,一行代码启用某列tooltip功能,
2、.net插件:
this.View.GetControl<EntryGrid>("FList").SetTooltipEnabledForList("FDescript", true);
注:适用于单据体列,使用单据体列时,注意列名参数是大写,列必须是锁定状态
三、动态改变表格列头标题
1、描述:场景举例:比如动态表单某显示列,不同条件显示不同列,普通做法用显示隐藏列的做法,实际只要数据类型相同可以用一个列在动态改变其列头其数据源即可,减少列数的渲染
2、.net插件:
JSONObject job = new JSONObject(); job["key"] = "FName"; //表格列名大写 job["header"] = "设置FName列的自定义标题"; this.View.GetControl("FEntiy").InvokeControlMethod("UpdateFieldStates", job);
四、单据体怎么创建链接列
1、描述:单据体有一个列是链接列,点击链接列可以打开某一个网站地址
2、单据体创建链接列:1)、拖一个普通文本列到单据体 2)、设置该列的锁定属性为全部锁定,列表显示控件属性设置为“链接”,单据显示列表控件属性勾选 3)、该普通文本列是根据value值来显示具体在某个单元格的链接内容,如果为空,则单元格显示是空,其插件用法和普通文本无区别,比如Model.setvalue赋值等,如果不需要关联数据库数据,则其字段名属性设置为空即可
3、由于界面显示该列的标题也是链接,可以插件让标题显示其文本:this.View.GetControl<EntryGrid>("FEntity").SetColHeaderAsText(new List<string>() { "FText".ToUpper() });
4、点击具体某个单元格里的链接内容,会发送事件打服务端插件,可在插件里面的EntryButtonCellClick事件里写:
if (e.EntryKey.EqualsIgnoreCase("FEntity") && e.FieldKey.EqualsIgnoreCase("FText")) #EqualsIgnoreCase引用 using Kingdee.BOS.Util { ViewCommonAction.ShowWebURL(this.View, "http://www.baidu.com";);#引用 using Kingdee.BOS.Core.DynamicForm 该指令用浏览器直接打开某个网页地址 }
五、改变单据的标题名称
1、描述,打开某一个单据,自定义这个单据的显示标题,可以通过以下方案
1)代码showform的方式打开某也签,可showform时,设置caption属性,即可
2)在某单据插件中写插件(python)如下(该方案紧支持以主控台页签打开方式有效,补丁基于PT-146836 [7.5.1.202005],2020年5月26发布通版补丁支持,如场景,改变物料单据的标题为当前物料编码)
import clr; clr.AddReference('System'); clr.AddReference('Kingdee.BOS.Core'); clr.AddReference('Kingdee.BOS'); from System import *; from Kingdee.BOS import *; from Kingdee.BOS.Core.DynamicForm import *; from Kingdee.BOS.Core.DynamicForm.PlugIn import *; from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *; def AfterBindData(e): if this.View.Context.ClientType == ClientType.Html: mainview = this.View.ParentFormView; else: mainview = this.View.GetView(this.View.Context.ConsolePageId); if mainview is not None: mainview.GetControl("FMainTab").InvokeControlMethod("SetTitleByPageid",str(this.View.PageId),"改变物料单据标题","改变物料单据标题tooltip"); this.View.SendDynamicFormAction(mainview);
3)在非主控台页签方式打开(普通弹窗形式)的单据,改变其单据标题
def AfterBindData(e): this.View.AddAction("SetFormTitle","自定义标题");
六、设置窗体主菜单整个菜单隐藏
1、描述:主菜单是作为窗体的一部分,所以要更改主菜单整个菜单的属性是前端窗体封装出来的特定方法处理
2、隐藏整个主菜单方法(.net插件)
this.View.AddAction("SetMainMenuVisible", false);
七、动态改变表格列头标题提示(tooltip)
1、描述:表格列头标题提示可在插件动态设置,前端默认tooltip都和标题一致
2、.net插件:
JSONObject job = new JSONObject(); job["key"]="FName"; job["headertooltip"]="设置FName列的自定义列标题提示"; this.View.GetControl("FList").InvokeControlMethod("UpdateFieldStates",job);
八、表格改变列对齐方式
1、描述:字段在BOS设计器中的“文本对齐方式”属性,默认都是缺省,平台缺省的规则是,数字类型字段是右对齐,其余字段默认都是左对齐显示,该属性的设置会同时运用到单据列表上的对齐方式显示,但是,在单据体中,只对锁定单元格有效,因为单据编辑表体的控件在编辑状态下没有对齐一说,其单元格编辑控件的录入习惯,所以单据体的对齐方式是在锁定单元格状态有效
2、动态更改单据体某列的对齐方式(锁定状态有效) .net插件:
this.View.GetControl<EntryGrid>("FEntity").SetCellTextAlign("列名大写", "Left/Right/Center", 行号);
3、动态更改单据列表某列的对齐方式 列表插件的,注册python脚本:
from Kingdee.BOS.JSON import *; from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * def ListCreateColumns(e): for objcol in e.Columns: if objcol.GetString("dataIndex")=="FQty":#字段名,注意列表在平台构建的列名,如物料编码,是FMaterialId.FNumber objcol["defaultColAlignType"]=1;#1-左,2-右,3-居中 break;
九、表格的数字负数颜色
1、描述:系统单据数字支持负数颜色的改变有以下应用地方
1)单据列表负数颜色:在BOS设计器,单据属性“列表条件格式化”属性,进行配置,根据不同条件,可设置字段的负数时的颜色
2)单据编辑状态的负数颜色:可在,主控,用户下拉,本地配置功能里面,配置负数编辑颜色,(配置后,所有单据的编辑状态的负数颜色会改变)
3)单据非编辑(锁定)状态下的负数颜色:支持二开代码编写
2、单据体动态改变单元格前景颜色(锁定有效).net插件:
this.View.GetControl<EntryGrid>("FEntity").SetForecolor("列名大写", "#FFFFFF00", 行号);#中间注意颜色,必须是#+8位,一般都是#FF+6位
3、QA解答:
Q:第2点的单据编辑状态的负数颜色为什么不能运用所有的负数颜色上去?
A:由于在支持该负数场景时,其属性的侧重点不同,本地配置里面的负数编辑颜色,侧重点是用户在录入的那一刻会提醒用户当前录入的是负数,突出负数,特别在数字无控制大于0情况下的使用场景,以免用户误录入造成不正确
但是在锁定显示时,在系统里面,有红蓝单的场景设计,避免依据业务规则进行局部着色时,与全局参数配置冲突,引起业务歧义。因此不允许把编辑颜色应用到只读显示的单元格上,再者,在锁定状态下,是可以插件改变其锁定单元格前景色,则是用插件代码设置的颜色还是全局属性控制,两者无法界定运用优先。
所以,本地配置的“负数编辑颜色”只是针对数字控件录入时候的颜色控制属性,对单据体表格的锁定状态负数不运用该属性以及全局属性设计,所以锁定状态的负数显示颜色可插件根据实际需要进行代码控制
十、插件调用外部链接
1、描述:插件调用外部链接,如https://www.baidu.com
2、样例.net
ViewCommonAction.ShowWebURL(this.View, "http://www.baidu.com");//ViewCommonAction需要引用组件Kingdee.BOS.Core.dll
说明,该方法的url同事支持客户端本地绝对路径(仅GUI客户端)
十一、表格禁用排序过滤功能
1、python脚本样例参考文章:
https://vip.kingdee.com/article/12923
十二、插件聚焦某单据头字段
1、描述:插件聚焦到某单据头字段
2、样例.net
this.View.GetControl("FText").SetFocus();
十三、树控件加载赋值
var treeView = this.View.GetControl<TreeView>("树形控件Key"); var rootNode = new TreeNode() { id="AllNode", text="全部"};//跟节点 for(int i=0;i<10;i++) { var node = new TreeNode() { xtype = "leaf", id = "id"+i.ToString(), text = "text"+i.ToString() }; rootNode.children.Add(node); } treeView.ClearAllNode(); treeView.SetRootNode(rootNode); //把根节点赋值给树形控件 treeView.SetExpanded(true); treeView.Select("AllNode");//自动选中某节点
十四、文本字段设置编辑性
1、描述:文本字段可编辑性和锁定性是两个属性,锁定性是整个字段都不能编辑,但有一个场景是不希望录入,但是要按钮出来(右边三个点的按钮),那么正常BOS设计器里面有两个属性:编辑风格和显示编辑按钮,显示编辑按钮是指:是否显示按钮(锁定状态不显示),编辑风格是指:是否可编辑,仅按钮显示,也即不可编辑,按钮可使用
2、插件更改可编辑性样例
1)、python:
def AfterBindData(e): this.View.GetControl("FText").SetCustomPropertyValue("Editable", False);
2)、.net:
this.View.GetControl("FText").SetCustomPropertyValue("Editable", False);
十五、单据头字段设置ToolTip
1、描述:单据头字段,需要设置ToolTip显示(也即鼠标滑到字段,会显示提示)
2、说明:下面样例只适用单据头字段,不是单据体的字段哈,单据体字段设置tooltip见第2点说明,单据头字段的ToolTip交互不是鼠标到录入框才出tooltip,是滑到单据头的标签的地方才会出现tooltip,这个是UE交互设计,在录入框出现tooltip会影响用户录入和焦点等体验
3、插件更改ToolTip属性
1)、python:
def AfterBindData(e): tooltip=this.View.Model.GetValue("FRemark",0); this.View.GetControl("FRemark").SetCustomPropertyValue("ToolTip",tooltip);
2)、.net:
string tooltip=this.View.Model.GetValue("FRemark",0); this.View.GetControl("FRemark").SetCustomPropertyValue("ToolTip",tooltip);
3)、附:控件ToolTip属性是字符串,设置成一个字符串之后,不会根据字段内容变化而变化,如果要录入时,tooltip内容也根据当前内容实时变化时,就需要结合值更新事件,在值更新事件里面调用上面代码即可
如有很二开反馈通用的好的插件,内部验证后,会持续更新样例^_^
金蝶云星空系统插件样例集锦
本文2024-09-23 03:47:16发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161103.html