我们的低代码开发平台从一开始决定做的时候,就追求未来能够支持多种类型的客户端,目前支持Winform,Web,H5,FlutterAPP,当然了,未来也有可能会随着实际的需要淘汰掉一些客户端的。
为了系统更易于维护,减少其对第三方的依赖风险,我们总是坚持着“能自己实现的一定不要依赖于第三方”,所以我们低代码平台本身的各种控件,都是基于.NET Framework自带的基础组件进行扩展而来,虽然多写了一些代码,但是最终的结果还是很值得的,整个客户端,开发平台等等包都非常非常小!
为了更好地在Winform中显示各种个性化的表格,我们对DataGridView做了很多的扩展。好在DataGridView允许我们自定义列,可以使用GDI自绘单元格等等。
1、列表头合并
很多的时候,我们是希望能够对列表头进行合并显示的,这种需求往往存在于一些报表之中,比如如下的显示:
合并列表头
2、合并单元格
自动判断某一列的内容,如果同一列多行的内容相同则自动合并显示,合并单元格的实现方式和列表头显示其实差不多,唯一不一样的是一个是表头,一个是内容。
合并单元格
3、行分组显示
可以根据单据的父单据,实现分组显示。
分组显示
4、单元格下拉显示自定义内容
比如某个单元格下拉,需要显示当前单据及引用单据的字段等等。
自定义单元格下拉内容
5、单元格中显示按钮
比如可编辑子表中,需要显示按钮以便选择引用单据。
单元格显示按钮
6、单元格显示计算器
某个数值型的单元格,显示计算器。
单元格显示计算器
还有很多很多的扩展,DataGridView本身很强大,但是却不能像Excel那样很方便地设置边框,设置每个单元格格式,所以能做的还是相对比较少,但是对于非复杂报表应用其实已经是足够了的!
比如为了实现单据转换,日期类型的字段支持设置格式化字符串
同一个单元格中既显示文本内容也显示按钮
点击单元格显示完全自定义的下拉选择框
总之,为了尽可能减少对第三方的依赖,我们对DataGridView做了很多很多的扩展,这些扩展对其他的朋友同样有借鉴意义。