2012-12-12 84 views
0

我在處理primefaces圖表時遇到了問題。通過JavaScript函數刷新對話框中的內容

問題

當我點擊一個線型圖,對話應該出現包含另一個線型圖。

示例代碼

<p:lineChart id="chartOne" rendered="cond1"/> 

<p:dialog widgetVar="dialogOne"> 
    <p:lineChart id="chartTwo" rendered="cond1"/> 
</p:dialog> 

<script> 
    $('#chartOne').bind('jqplotClick', 
     function (ev, seriesIndex, pointIndex, data) { 
      dialogOne.show(); 
     } 
    ); 
</script> 

現在我能顯示內部對話在圖表上點擊,但圖的對話是不爽快。我不太清楚通過JavaScript函數刷新內容。

UPDATE1:

條件是:chartOne應提供點擊在其整個畫布(不僅是數據點或系列)。 chartTwo只有在dialogOne.show()發生時纔會呈現。

任何幫助......非常感謝

回答

1

這可能是一個使用動態對話框的解決方案。

從文檔:

動態模式允許對話獲取它的beforeit真實所示,而不是在其上是降低初始頁面加載時間有用頁面加載內容。默認爲false。

只要定義你的對話是這樣的:

<p:dialog widgetVar="dialogOne" dynamic="true"> 

更新:

要刷新從Javascript的對話框,您可以使用p:remoteCommand。例如:

<h:form id="formId"> 
    <p:dialog id="dialog" /> 
</h:form> 
<p:remoteCommand name="updateDialog" update=":formId:dialog"/> 

二更新:

從JavaScript使用p:remoteCommand呼叫updateDialog()

+0

oops我錯過了一個簡單的概念。謝謝..它避免了在顯示之前加載對話內容。另外我不需要刷新對話內容。這很有幫助.. –

+0

但它仍然沒有回答我的問題。如何通過JavaScript函數刷新對話框中的內容 –

+0

@DipendraSingh如果我給出的答案沒有回答您的問題,請不要將其標記爲已接受。 ;-)除此之外,我已經更新了我的答案。 – siebz0r

0

試試這個:支持bean的方法action()

<p:lineChart id="chartOne" rendered="cond1" > 
    <p:ajax event="itemSelect" listener="#{bean.action}" update="chartTwo" oncomplete="dialogOne.show()" /> 
</p:lineChart> 

<p:dialog widgetVar="dialogOne"> 
    <p:lineChart id="chartTwo" rendered="cond1"/> 
</p:dialog> 

,你應該準備好chartTwo數據。

根據用戶手冊,圖表的可點擊部分將是系列,而不是整個圖表。檢查

http://www.primefaces.org/showcase-labs/ui/interactiveCharts.jsf

更多的信息和工作的例子。

+0

事件「itemSelect」在我的情況下沒有觸發。我認爲對於圖表點擊,需要綁定 –

+0

您運行的是哪個Primefaces版本?從PF 3.4手冊:3.12.9 Ajax行爲事件 itemSelect是圖表的唯一ajax行爲事件,當單擊一系列 圖表時,會觸發此事件。如果你定義了一個監聽器,它將通過傳遞一個 org.primefaces.event.ItemSelectEvent實例來執行。 – Mindwin

+0

對不起,我沒有正確解釋我的要求。 'jqplotClick'也可用於點擊其他數據點,但itemselect事件僅用於系列選擇。最終,我的目標是提供可點擊的圖表(與數據點無關),以便所選圖表可以顯示在對話框中。 –