1. 概述
APIAPI匯總 中公共模組和填報預覽專有的API,都支援在填報預覽下使用。
2. API索引
2.1 元件API
填報範本,會存在參數面板上的元件和填報儲存格中的元件。
獲取參數面板上的元件,可參考:參數面板API
獲取填報儲存格中的元件,可參考:填報預覽專有
兩者都支援的可參考 獲取元件,但僅支援在元件的「事件」中使用。
獲取元件後,可以使用元件的方法,元件方法可參考:元件通用、日期元件專有、下拉框元件專有、按鈕元件專有
2.2 儲存格API
獲取儲存格、給儲存格指派,獲取和設定儲存格值API
2.3 工具欄API
獲取工具欄,可參考:工具欄
對工具欄中按鈕操作,可參考:工具工具欄按鈕通用、郵件按鈕專有
2.4 填報頁面API
填報頁面API,可參考:填報預覽專有
2.5 訊息API
訊息API可參考:FR.Msg
2.6 其他API
其他API可以可參考:APIAPI匯總
3. 注意事項
1)如果是在初始化事件中使用 JS 但未生效,可以嘗試加上延時函式 setTimeout。範例如下:
setTimeout(function() {
_g().getWidgetByCell("A1").setEnable(false);
//將A1儲存格元件設定為不可用
}, 500)
//延時0.5s執行
2)當使用了延時函式 setTimeout 時,this 物件就會失效,可以將 this 放在延時函式外進行指派呼叫來避免。範例如下:
var widget=this;
setTimeout(function() {
widget.setEnable(false);
//將當前元件設定為不可用
}, 500)
//延時0.5s執行
3)當清空儲存格元件時,建議同時清空元件值和儲存格值,否則可能會出現清空失敗的情況。範例如下:
_g().getWidgetByCell("A1").setValue("");
//清空A1儲存格元件值
_g().curLGP.setCellValue("A1", "");
//清空A1儲存格值
注:給儲存格元件指派時同理,最好同時給元件和元件所在儲存格都指派
4)如果元件設定了不能為空,則會使清空失效。設定了不允許自訂值,則只能賦資料字典中存在的值:
5)如果 Widget 是一個元件陣列,則不能直接呼叫相關方法,需要透過遍歷來實現。範例如下:
var widgets = _g().getWidgetsByName("demo");
//獲取元件名稱為demo的元件陣列
for (i = 0; i < widgets.length; i++) {
widgets[i].setEnable(false);
//遍歷禁用元件
}
6)填報預覽下,用儲存格編號獲取的儲存格是一個具體的儲存格,不會自動識別擴展場景。
比如 A1 擴展出 3 筆資料,用 JS 給 A1 指派時,就只是賦給第一筆資料。此時可以用公式獲取 A1 擴展出的資料個數,遍歷執行相關方法。
範例如下,其中 len 參數為公式 len(A1) 的值。
for (i = 0; i < len; i++) {
_g().setCellValue(0, 0, i, "帆軟")
//給A1擴展出的所有儲存格指派
}
7)儲存格元件和其所在的儲存格是 2 個獨立的元素,在大部分填報獲取儲存格值和給儲存格指派的場景下,都需要直接對儲存格進行操作,而不是元件,否則可能出現獲取不到正確值的問題。
有種特殊情況是,當元件填入值未失焦的情況下,此時元件值還未寫入儲存格,所以這時就需要用獲取元件值的API去獲取該輸入值。