我有一個要求,我有一個af:查詢面板,查詢後填充af:表。如何在默認情況下在Oracle中的af:表中選擇一行ADF
現在基於選擇任意1行時,它下面的圖表應該根據一些列進行填充錶行。現在
我的問題是,當表被填充在第一次搜索,沒有行被選中。
我需要自動選擇第一行。我已經從網絡論壇搜索了多個解決方案,但直到現在還沒有找到任何工作解決方案。
請幫助我,我應該用什麼樣的代碼以編程方式選擇一行。還有我應該把這段代碼放在後臺bean中。
我有一個要求,我有一個af:查詢面板,查詢後填充af:表。如何在默認情況下在Oracle中的af:表中選擇一行ADF
現在基於選擇任意1行時,它下面的圖表應該根據一些列進行填充錶行。現在
我的問題是,當表被填充在第一次搜索,沒有行被選中。
我需要自動選擇第一行。我已經從網絡論壇搜索了多個解決方案,但直到現在還沒有找到任何工作解決方案。
請幫助我,我應該用什麼樣的代碼以編程方式選擇一行。還有我應該把這段代碼放在後臺bean中。
正如您已經正確提到的那樣,在表格的第一次渲染時,不會選擇任何行。我也遇到過這個問題,我通過調用BeforePhase(即:在頁面上的第一次渲染或刷新)時調用相應的VO的第一行來處理它。
我明白你打算這樣做的第一次搜索。 af:查詢組件具有名爲QueryListener的屬性。您可以將它與支持bean中的方法關聯起來。內容應該是這樣的:
private QueryEvent qEvent = null;
public void queryListener(QueryEvent queryEvent) {
setQEvent(queryEvent);
JSFUtils.invokeMethodExpression("#{bindings.YourViewObjectNameViewCriteriaQuery.processQuery}", Object.class,
QueryEvent.class, getQEvent());
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry(); //Edited
DCBindingContainer bc = (DCBindingContainer)bindings;
DCIteratorBinding iterator = bc.findIteratorBinding("YourViewObject1Iterator");
Row r = iterator.getCurrentRow(); //Here you've got the very first row, and can operate with it
.....
}
public void setQEvent(QueryEvent qEvent) {
this.qEvent = qEvent;
}
public QueryEvent getQEvent() {
return qEvent;
}
這樣,當查詢被執行時(即:當搜索結束時),你應該能夠得到第一行。 獲得第一行後,您可以編程的方式執行圖形流程或執行任何操作。
注:invokeMethodExpression可以在裏面JSFUtils,這是一個starndard類與源代碼,你可以在這裏下載一些靜態方法來發現:JSFUtils.java
嗨@Endrik,我想嘗試的解決方案,並有2斷枝: 1. JSFUtils.java不必須的InvokeMethodExpression 2. UsersBean.getBindings();你能不能分享一樣的代碼,因爲我沒有任何這樣的方法。 請幫 –
一個更thing..i測試了空白查詢聽衆只有一個SYS了聲明,發現即使在查詢時,並不是在所有的執行它...請說明爲什麼這種情況正在發生.. –
哦,我很抱歉,我沒有看到UsersBean的用法(這是我自己的實用程序bean與靜態方法之一)。我編輯了代碼。我還添加了另一個鏈接,其中會找到invokeMethodExpression方法。根據它沒有執行的事實,我會說要檢查你是否已經完成了鏈接,它應該被調用。下面是如何重寫其行爲的一個例子:http://andrejusb.blogspot.com/2008/11/adf-query-component-and-view-criteria.html – Endrik