填報表中也可以新增 html 事件

bubblegum發表於2019-12-18

在實際的專案開發中,填報表的應用十分廣泛。

多數情況下,填報表會作為整個專案的一部分配合需求靈活使用,但有時也會受大專案環境的影響,產生一些特別的要求。比如,通常報表單元格的資料型別大多是文字,有時卻需要藉助 HTML 或者 JavaScript 實現一些互動效果,例如在報表中新增一些說明性的提示、自定義功能性按鈕等。顯然,單純的文字資料型別不支援這種互動操作,那麼我們就會想填報表是不是能夠支援 HTML 資料型別的用法呢?如果支援又該怎麼使用呢?

答案肯定是支援的(你懂得),下面我們就舉個例子:

例項一要求:

報表中增加說明提示框,供填報表格參考。

下面以報表工具自帶報表 2.2.sht 為例,看一下如何應用 HTML。

例項報表如下:

1png

要求效果:報表右上角定義按鈕,點選按鈕後彈出說明資訊。

具體實現:

1. 在當前報表的基礎上新增行,如下:

2png

2. 填報表展現頁面(此例項為:previewInput.jsp)中,定義 String sgid=""; 且將 String sgid = InputTag.getInputId();  修改為 sgid = InputTag.getInputId();,如下:

3png

最後在 jsp 末尾的標籤內新增 js 方法程式碼如下:![]
4png

其中:

abc() 方法 指定具體的彈出資訊及方式;

cell 變數 獲取觸發 abc()方法的單元格,並透過 $(cell).html() 定義具體的 html 事件。

效果:(動圖)

html1gif

例項二要求

在行式填報表單元格中自定義按鈕,點選後可以插入行。

這裡之所以不直接應用自帶的工具條按鈕,是因為報表應用與專案整合後會遮蔽應用自帶的工具條。

這裡還是以報表工具自帶報表 2.2.sht 為例,演示一下怎麼在報表中呼叫報表工具內建的方法。

具體實現:

1. 明確報表中需要自定義的按鈕所要執行的操作;

這裡以自定義插入行為例。

2. 找出對應的方法;

插入行:_insertRow()刪除行: _deleteRow() 追加行: _appendRow()

匯出 excel: _inputDownloadExcel()匯入 excel: _inputLoadExcelData()

因版本差異具體參考 inputtoolbar.jsp

3. 參照例項一修改 $(cell).html() 中具體觸發的方法,如下:

5png

效果:(動圖)

html2gif

溫馨提示:

1. Jsp 中 39 行的部分必須重定義變數 String sgid=""; 且將 String sgid = InputTag.getInputId();  修改為 sgid = InputTag.getInputId(); 否則報表展現會出現類似如下報錯:

6png

2. $(cell).html() 中涉及多組單引號和雙引號時,注意使用轉移符 \ 以保證 js 正確解析。

課外知識擴充:

文字型別是單元格預設的資料型別,我們在報表單元格里使用最多的就是這種型別。如果單元格的型別為“文字”,系統就把單元格中的字元、數字或表示式的計算結果都當成文字來處理。

HTML**** 型別是超文字標記語言,一個 HTML 檔案不僅包含文字內容,還包含一些標記。 如果報表中需要用到一些標記,但單元格不支援這種標記,這時就可以把單元格的型別設定為“html”型別,在單元格中嵌入 html 標記,透過 html 型別可以在單元格中顯示單元格本身不支援的標記資訊。html 型別還有一個用途是可以在單元格中嵌入隱藏的 javascript 函式,如果報表中多處都用到同一個 js 函式,我們可以把一個隱藏單元格設定為 html 型別,在此單元格中定義 js 函式,供其他單元格引用,這樣就可以給使用者的報表設計帶來很大方便。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2669222/,如需轉載,請註明出處,否則將追究法律責任。

相關文章