如何在JVx框架中获取单元格编辑器的格式化显示值?
JVx框架获取单元格编辑器一致的格式化文本方案
要获取和UI单元格编辑器格式一致的文本(用于报表生成),不需要依赖UI控件,直接复用框架中列定义(ColumnDefinition)绑定的格式化器即可——这和表格/编辑器控件使用的是同一套格式化逻辑,步骤如下:
- 从
DataRow所属的IDataBook中获取目标列的ColumnDefinition - 从列定义中取出配置好的
Formatter - 调用格式化器的
format方法,传入原始值得到格式化文本
代码示例
格式化日期列(DATECOL)
// 获取列定义 ColumnDefinition dateColDef = dataRow.getDataBook().getColumnDefinition("DATECOL"); // 获取配置好的格式化器 Formatter dateFormatter = dateColDef.getColumnFormatter(); // 生成与UI一致的格式化日期文本 String formattedDate = dateFormatter.format(dataRow.getValue("DATECOL"));
格式化数字列(NUMBERCOL)
// 获取列定义 ColumnDefinition numColDef = dataRow.getDataBook().getColumnDefinition("NUMBERCOL"); // 获取配置好的格式化器 Formatter numFormatter = numColDef.getColumnFormatter(); // 生成与UI一致的格式化数字文本 String formattedNumber = numFormatter.format(dataRow.getValue("NUMBERCOL"));
说明
datarow.getValueAsString()方法仅返回值的默认字符串形式,不会应用你在单元格编辑器中配置的自定义格式- 你之前用到的
LabelControl也是通过绑定列定义的格式化器来渲染文本的,因此直接复用这个格式化器,就能在非UI场景下得到完全一致的格式化结果
内容的提问来源于stack exchange,提问作者Robosch
相关产品推荐
相关产品推荐

