1. 概述
1.1 應用場景
編輯完一個控件的值後,自動給其他填報控件或單元格賦值。示例中編輯完姓名後性别默認賦值爲女,如下圖所示:
1.2 實現思路
給控件添加編輯結束事件動态地給其他控件或單元格賦值。
不管是單元格還是控件,都是用contentPane.setCellValue([reportIndex], columnIndex, rowIndex, cv);或者contentPane.setCellValue("單元格",null, cv);來賦值。
reportIndex指定單元格或控件所在的 sheet,從 0 開始。
columnIndex指定單元格或控件所在的列,從 0 開始。
rowIndex指定單元格或控件所在的行,從 0 開始。
cv表示需要賦給單元格或控件的值。
contentPane.setCellValue(1,2,3,"abc");表示給 sheet2 的第 3 列第 4 行即單元格 C4 賦值 abc。
注:給控件所在單元格賦值應該使用 setCellValue,不建議使用 setValue,這種方式要求填寫時焦點必須在該單元格,否則會有賦值無效的情況。
2. 示例
2.1 設計報表
1)設計填報表格,其中 B2、E2、E3 單元格添加「文本控件」,B3 單元格添加「單選按鈕組控件」,B4 單元格添加「文本域控件」,如下圖所示:
2)選中 B3 單元格,在「控件設置>屬性>數據字典」處爲「單選按鈕組控件」綁定自定義數據,如下圖所示:
2.2 設置填報屬性
設計器菜單欄選擇「模板>報表填報屬性」,新增一個内置 SQL 提交,設置如下圖所示:
2.3 控件添加事件
選中 E2 單元格,給「文本控件」添加一個編輯後事件,實現編輯該控件後可以改變 A1 單元格的值和給 B3 單元格自動賦值,如下圖所示:
JavaScript 代碼如下:
var a = this.getValue();
contentPane.setCellValue(0,0,a+"個人信息登記表");
contentPane.setCellValue("B3",null,"女");
注:在 702 版本以及 702 之前的版本,如果使用到 contentPane.curLGp.setCellValue(cell,null,cv)給單元格或控件賦值,需要修改成 contentPane.setCellValue()的方式來賦值,否則在提交的時候不會入庫,即contentPane.curLGp.setCellValue(cell,null,cv)是賦顯示值,而非實際值。
2.4 預覽效果
1)PC 端
保存報表,選擇填報預覽,效果如下圖所示:
2)移動端
支持坐标賦值:contentPane.setCellValue([reportIndex], columnIndex, rowIndex, cv)
不支持單元格賦值:contentPane.setCellValue("單元格",null, cv)
3. 模板下載
已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填報預覽JS實例\47-JS給填報控件(單元格)賦值.cpt
點擊下載模板:47-JS給填報控件(單元格)賦值.cpt