[]
如果属性绑定数据表的值,希望通过数据对话框编辑,可以通过标注BindingDataSourcePropertyAttribute 的方式设置。
注意,标注BindingDataSourcePropertyAttribute的属性类型必须是 object 。
public class MyPluginCommand : Command
{
[BindingDataSourceProperty]
[DisplayName("绑定数据源")]
public object DataSource { get; set; }
}
在设计器中效果如下:
通过命令上的getBindingDataSourceValue方法获取绑定数据。
class MyPluginCommand extends Forguncy.Plugin.CommandBase {
async execute() {
let dataSource = this.CommandParam.DataSource;
var data = await this.getBindingDataSourceValue(dataSource);
console.log(data);
}
}
Forguncy.Plugin.CommandFactory.registerCommand("MyPlugin.MyPluginCommand, MyPlugin", MyPluginCommand);
如果需要更细致的控制,可以通过BindingDataSourcePropertyAttribute的其他属性来控制。
1. 预置数据列
设置BindingDataSourcePropertyAttribute 的 Columns 属性。
代码:
格式:列名|列名2...
public class MyPluginCommand : Command
{
[BindingDataSourceProperty(Columns = "ID|Name")]
[DisplayName("绑定数据源")]
public object DataSource { get; set; }
}
设计器效果:
2. 为预置数据列添加显示文本
设置BindingDataSourcePropertyAttribute 的 Columns 属性。
代码:
格式:列名:显示名|列名2:显示名|...
public class MyPluginCommand : Command
{
[BindingDataSourceProperty(Columns = "ID|Name:姓名|Age:年龄")]
[DisplayName("绑定数据源")]
public object DataSource { get; set; }
}
设计器效果:
注意:设置显示文本不影响JavaScript端数据处理,只影响在设计器中的显示。
如果在此模式下仍然需要添加自定义列,可以设置AllowAddCustomColumns属性。
public class MyPluginCommand : Command
{
[BindingDataSourceProperty(AllowAddCustomColumns = true, Columns = "ID|Name:姓名|Age:年龄")]
[DisplayName("绑定数据源")]
public object DataSource { get; set; }
}
设置AllowAddCustomColumns之后效果如下(此特性需要活字格版本大于等于9.0.100.0)。
3. 为预置数据源列添加描述信息
设置BindingDataSourcePropertyAttribute 的 ColumnsDescription 属性。
代码:
格式:列名:描述|列名2:描述2...
public class MyPluginCommand : Command
{
[BindingDataSourceProperty(Columns = "ID|Name|Age", ColumnsDescription = "ID:通常绑定主键列|Age:表示年龄列")]
[DisplayName("绑定数据源")]
public object DataSource { get; set; }
}
设计器效果:
注意,需要和Columns属性配合使用,在Columns里没有的列,设置的描述会被忽略。
4. 开启树结构查询配置(ID/PID 结构)
什么是ID/PID结构
在数据库中,是用二维表保存数据的,但是现实生活中,很多数据会有父子关系,例如公司的组织机构,会在数据库中保存为如下形式,这样就可以使用二维表表示树结构了。
ID | 名称 | PID |
---|---|---|
1 | xx公司 | |
2 | 财务部 | 1 |
3 | 销售部 | 1 |
4 | 销售一组 | 3 |
5 | 销售二组 | 3 |
设置BindingDataSourcePropertyAttribute 的 IsIdPidStructure 属性为True声明接受树结构表。
代码:
public class MyPluginCommand : Command
{
[BindingDataSourceProperty(Columns = "ID|Name|PID", IsIdPidStructure = true, TreeIdColumnName = "ID", TreePidColumnName = "PID")]
[DisplayName("绑定数据源")]
public object DataSource { get; set; }
}
设计器效果:
会在其他标签页中增加“树形结构查询配置”的选项。
注意:开启树形结构查询配置IsIdPidStructure属性后,需要配合设置 TreeIdColumnName 和 TreePidColumnName 属性。