2011-01-06 202 views
1

帥哥,你們有沒有人知道如何做到這一點?刷新數據表

我有一個頁面上有一個數據表。它有一個按鈕來刪除一行。該按鈕按預期工作,當您單擊它時,它將刪除選定的行。我還有另一個按鈕,打開一個彈出窗口,您可以在其中搜索項目並將它們添加到該數據表中。當你點擊彈出窗口上的「選擇」按鈕時,我很難弄清楚如何刷新數據表。

我的解決方案是有一個隱藏的按鈕,將刷新數據表。它可以工作,當我litterally點擊它。但是當我使用JavaScript在彈出窗口上觸發點擊事件時,它並不總是有效。有時會刷新,有時不會。

什麼是實際刷新數據表的最佳方式?

+0

你正在使用哪個jsf版本? – Dejell 2011-01-06 06:58:33

回答

4

如果使用JSF2.0,有一個選項與

<h:form> 
... 
...(here you have the binding data) 
<h:commandButton action="#{yourbean.updateRows}" > 
<f:ajax render="tableName" /> 
</h:commandButton> 
</h:form> 

更新您的應用程序的一部分EDITED

如果你想從JavaScript調用它使用:

document.getElementById('elementName').click(); 
+0

謝謝。這實際上是我目前的解決方案,但有沒有一種通過JavaScript調用commandButton的方法?我用過這個:彈出窗口:opener.refreshDataTable();然後在我的父窗口(包含要刷新的數據表的那個窗口)上:函數refreshDataTable(){('。addOcc')。click(); \t \t \t var btn = document.getElementById(「mainForm:dt:composite_dataTable_dt」); \t \t \t btn.click(); \t \t} – raimun 2011-01-06 10:13:57

0

如何在彈出窗口中訪問DataTable?通過保持它在一些會話變量,並在你的父頁面顯示數據表通過一些UI組件像GridView?在這種情況下,您可以通過javascript從您選擇popu窗口的位置重新加載父窗口。例如。 window.opener.location.reload();

+0

感謝您的回覆。是的,我確實將它存儲在會話中。然而,我的另一種選擇實際上是重新加載整個頁面,因爲我注意到點擊「刪除」按鈕實際上刪除了我選擇的行,然後刷新數據表而不刷新整個頁面,也許我可以做的東西實際上只需點擊彈出窗口上的「選擇」按鈕即可刷新數據表。 – raimun 2011-01-06 06:43:22

-2

我能想到的.. Datatable.AcceptChanges();但是,這對於C#..