首先,你必須坦然面對的事實是,雖然BIRT腳本被稱爲「JavaScript的」,它實際上是一個服務器端API時的OpenLayers是客戶端的JavaScript API。特別是,這意味着我們無法直接訪問來自OpenLayers事件的報告項目。
我們可以把我們所需要的所有項目值客戶端變量解決此,讓我們可以在客戶端的JavaScript代碼中使用它們。這可以通過在BIRT報告中創建隱藏的文本元素設置爲「HTML」來實現,然後將一些值存儲在對象中。例如,這是this sample的工作原理。
在報告的一開始,我們在初始化下面這樣一個隱藏的HTML文本元素命名爲「報告」一個客戶端對象。例如,讓我們說,我們的報告有兩個參數「參數1」和「參數2」中,我們可以利用它們存儲「VALUE-OF」標籤:
<script>
report={};
report.param1='<VALUE-OF>params["param1"].value</VALUE-OF>';
report.param2='<VALUE-OF>params["param2"].value</VALUE-OF>';
report.countries={};
</script>
從的OpenLayers事件
現在,您可以通過使用獲得的報告參數只是表達式report.param1
注意在這個例子中,我們還初始化了一個名爲「countries」的表格對象。如果我們需要訪問birt表的數據字段的值,可以使用它,以便稍後在客戶端JavaScript中使用它。爲了實現這一點,我們在表格行中添加了另一個隱藏的HTML文本元素,存儲我們想要的信息。在這個例子中我們存儲相關聯的表中的每個國家的數值:
<script>
report.countries['<VALUE-OF>row["countryID"]</VALUE-OF>']=<VALUE-OF>row["value"]</VALUE-OF>;
</script>
在的OpenLayers事件,從可變名爲「myCountryID」我們現在可以訪問由該BIRT表用表達這樣提供的值report.countries [myCountryID]
關於如何從javascript設置報表元素,假設在服務器端生成birt報表是不可能的。不過,我們仍然可以使用顯式標識符創建HTML文本元素,然後使用常規JavaScript代碼動態設置這些元素。
是的,可以通過將這些報告元素的值放入客戶端變量中。您應該更精確地擴展您的需求,以便我們可以嘗試給出答案。 – Dominique 2014-10-08 07:25:57
嗨多米尼克,感謝您的迴應。我已經編輯了這個問題,以便更具體。 – XScythe 2014-10-08 07:37:21