创建公式属性
- 在插件中增加一个公式类型的属性(单元格、命令、服务端命令),在使用中,这一步的操作都是一样的
- // 这样就可以增加一个公式类型的属性了,具体结果可以参考帮助手册插件开发文档
- [FormulaProperty]
- public object MyFormulaProperty{ get; set; }
复制代码
- 支持换行输入(单元格、命令、服务端命令)
- // 运行用户输入的时候,可以按住Alt+Enter换行输入
- [FormulaProperty(AcceptsReturn = true)]
- public object MyFormulaProperty{ get; set; }
复制代码
- 支持输入只能选择一个页面上的单元格(命令)
- // 前端命令中,可以引用页面上一些单元格的位置,我们可以通过这个属性,让输入只能是页面上某一个单元格,而是不一个复杂的公式,或者一块区域
- [FormulaProperty(OnlySupportCell = true)]
- public object MyFormulaProperty{ get; set; }
复制代码
使用公式属性
- 单元格插件和命令插件的公式的计算是一样的
- // 都是在JS文件中的使用的,通过继承类的evaluateFormula函数来计算公式的值
- const result = this.evaluateFormula(formula);
复制代码
- 服务端命令的公式计算有些区别,是在C#(也就是CS文件)中计算的
- // 首先计算公式时,需要函数中传递一个参数(IServerCommandExecuteContext dataContext),需要通过参数的一个函数来执行,而参数的来源就是服务端命令中ExecuteAsync,示例中是直接在服务端命令执行过程中调用的
- public async Task<ExecuteResult> ExecuteAsync(IServerCommandExecuteContext dataContext)
- {
- // 这里await是异步执行,可以不做理解,照这样子使用即可
- // 其他地方若是想要调用计算公式的函数,需要将IServerCommandExecuteContext dataContext作为函数的一个参数,在调用的时候将dataContext传入
- var propCalcedValue = await dataContext.EvaluateFormulaAsync(this.MyFormulaProperty);
- }
复制代码
- 有一点需要注意,单元格插件和命令插件的公式执行虽然一样,但是获取属性函数是不一样的
- // 这个是单元格插件获取属性值
- const formula = this.CellElement.CellType.MyFormulaProperty;
- // 这个是命令插件获取属性值
- const formula = this.CommandParam.MyFormulaProperty;
复制代码
|
创建对应属性
命令插件和服务端命令插件创建返回结果的属性是一样的
- [ResultToProperty]
- [DisplayName("返回结果到变量")]
- public string Result { get; set; } = "结果";
复制代码
给返回结果属性赋值
命令插件和服务端命令插件赋值方式不一样,命令插件的功能都是JS文件中完成,服务端名功能都是CS文件中完成- // 命令插件赋值给变量是在JS文件中,通过活字格提供的函数给对应的变量“Result”赋值
- Forguncy.CommandHelper.setVariableValue(this.CommandParam.Result, value);
- // 服务端命令赋值是在CS文件中,仍然是通过dataContext这个变量给对应的变量命令“Result”赋值
- dataContext.Parameters[Result] = value;
复制代码
|
combo选择框属性的使用是比较常见的,但是这个功能的使用没有什么需要特别注意的,可以参考帮助手册
下拉列表 属性 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
|
这个功能使用也比较频繁,但是有些同学找不到,还有一些其他相关的属性设置,具体可以参考帮助手册,我这边就贴一样帮助手册链接
单元格Attribute索引 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
命令Attribute索引 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
服务端命令Attribute索引 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
属性校验
属性校验是我们在定义属性的中一个不可获取的一环,比如必填,数据范围等
属性校验 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)- // 标注Required属性,该属性在用户输入中,就是必填的,当然这个属性不限制属性的类型,所有的属性都是可以标注的
- [Required]
- public string Name { get; set; }
- // 字符串类型的属性,可以通过下面属性定义最大长度和最小长度
- [MaxLength(6)]
- [MinLength(1)]
- public string Name { get; set; }
- // 整数或者小数类型的属性,可以通过下面的属性定义可填的返回
- [Range(0,100)]
- public double Money { get; set; }
复制代码 温馨提示:帮助手册中关于属性校验的文档比较少,不过活字格中属性校验引用的是System.ComponentModel.DataAnnotations,大家有需要的话,可以参考相关的文档
C# 特性 System.ComponentModel 命名空间属性方法大全,System.ComponentModel 命名空间的特性 - 痴者工良 - 博客园 (cnblogs.com) |
这个功能,大家用到的可能性比较少,不过还是有用到的可能,所起到的作用和服务端命令中“条件”和“循环命令”下增加命令是一样的,这里主要告诉应该在哪里查看这个功能的使用,大家需要的话自行了解使用
添加 子命令 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn) (命令)
添加 子命令 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn) (服务端命令) |
了解了这么多功能了,不知道大家是否有这样一个认知,无论是单元格类型的插件,还是命令类型的插件,即使几乎所有的逻辑都是在JavaScript命令中完成的,但是属性的定义,却还都是在CS(C#)中做的。那么,咱们是否清楚,两者之间(Js文件,cs文件)的值互通呢
- JS文件获取用户输入的属性值,其实这个功能我们在前面的公式属性获取中有提到,这里就专门说一下,当然不只是公式,其他的所有属性都可以通过这样的方式来获取,只需要将MyProperty改成对应的属性名就可以了
- // 单元格类型的命令,一般是在onPageLoaded()函数中执行的
- onPageLoaded() {
- const formula = this.CellElement.CellType.MyProperty;
- const result = this.evaluateFormula(formula)
- }
- // 命令类型的命令,一般是在execute()函数中执行的
- execute() {
- const formula = this.CommandParam.MyProperty;
- const result = this.evaluateFormula(formula);
- }
复制代码
- JS文件将计算后的结果返回(命令)
- // 命令类型的插件,在执行完对应的逻辑之后,会有一个执行结果数据,需要将这个执行结果返回给用户
- Forguncy.CommandHelper.setVariableValue(this.CommandParam.Result, res);
复制代码
|
在我们开发前端插件时,我们有时也会引用一些外部的JavaScript或者CSS文件,而我们如何在活字格中使用这些文件
快速开始,添加Tinymce单元格插件 - 活字格V9帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
1. 将我们需要的JavaScript和CSS文件拷贝到我们插件中Resources目录下
2. 然后在我们PluginConfig.json文件中,引用这个文件就可以正常使用了
这样,我们就可以在我们的单元格JS文件和命令JS文件中使用这些外部引用的文件了
|
我们在日常开发中,有些命令因为对功能的开发有着至关重要的作用,但是单从命令本身阅读起来,又特别的麻烦,而我们只需要一些小小的技巧就可以让我们命令在使用中有着更高的可阅读性,以设置变量命令来举例
以前我们的插件中的ToString是这样的
现在我们只需要做这样的修改就可以让我们的插件名称变成动态的,可以根据我们用户对于某一个属性输入的值来设置不同的名称
|