Reporting 插件开发规范
admin |
2026-05-03 22:40 |
阅读 3 次
● 模板选择:始终从 ReportPluginTemplate 复制,即使你打算写简单报表。它自带完整的 MVVM 骨架、日期查询、SfDataGrid、CSV/XLSX 导出、以及独立的 BindableBase/RelayCommand — 你不需要的功能删掉比从零搭建快得多。
新建插件的步骤清单
┌───────────────────┬─────────────────────────────────────────────────────────────┐
│ 步骤 │ 做什么 │
├───────────────────┼─────────────────────────────────────────────────────────────┤
│ 1. 复制 │ 拷贝 ReportPluginTemplate/ 整个目录,重命名文件夹和 .csproj │
├───────────────────┼─────────────────────────────────────────────────────────────┤
│ 2. 加入解决方案 │ 在 CimsReporting.slnx 中添加 <Project> 引用 │
├───────────────────┼─────────────────────────────────────────────────────────────┤
│ 3. 修改插件元数据 │ TemplateReportPlugin.cs 中改 Id、MenuName、DisplayName │
├───────────────────┼─────────────────────────────────────────────────────────────┤
│ 4. 替换数据源 │ TemplateReportService.cs 中替换 QueryRowsAsync() 为真实数据 │
├───────────────────┼─────────────────────────────────────────────────────────────┤
│ 5. 调整 UI │ TemplateReportView.xaml 改列定义、查询面板、布局 │
├───────────────────┼─────────────────────────────────────────────────────────────┤
│ 6. 清理 ViewModel │ 删掉不需要的导出按钮、下拉框、摘要文本 │
└───────────────────┴─────────────────────────────────────────────────────────────┘
关键注意事项
- Id 必须全局唯一(不区分大小写),重复的会被静默跳过。建议命名规范:业务域.报表名,如 "finance.profit-structure"
- MenuName 决定顶级菜单:同一个 DLL 内取第一个非空 MenuName 作为菜单标签,两个插件放同一 DLL 则共享顶级菜单
- 不要改宿主:插件只需引用 CimsReporting.csproj(获取 IReportPlugin 接口),不要往宿主项目加代码
- MVVM 辅助类自带:模板的 BindableBase 和 RelayCommand 独立于宿主,不需要依赖 CimsReporting.Helpers
- Syncfusion 版本:如果引用 Syncfusion 控件,版本必须与宿主一致(v32.1462.19)
- NuGet 依赖自动处理:你引用的 NuGet 包会在 post-build 时自动复制到 plugin/deps/,无需额外配置
- ProjectReference 排除:post-build 已自动排除 CimsReporting*,不会把宿主 DLL 复制过去