2014-04-17 26 views
0

我對我的方法有疑問。我正在使用JDeveloper 12c。我有一個名爲activeYear的方法,代碼如下:如何在列中只設置一個值

public void activeYear() { 
    this.getCurrentRow().setAttribute("Active", 1); 
} 

它基於複選框。在我的應用程序中,它的作用就像 - 我有一個使用此方法的按鈕。如果我按下它,我當前行將其複選框值「活動」更改爲選定。

問題是:我必須只有一行激活,當我立即按下按鈕時,其他每一行都必須被取消選中。我如何更改此代碼?或者我應該添加一個更多的方法嗎?

解決方案:

我的方法activeYear我添加方法叫去活,這代碼是在這裏:

public void deactive() { 
    RowSetIterator rowSetIterator = this.createRowSetIterator("New"); 
    if (rowSetIterator != null) { 
     rowSetIterator.reset(); 
     while (rowSetIterator.hasNext()) { 
      Row currentRow = rowSetIterator.next(); 
      currentRow.setAttribute("Active", 0); 
     } 
     rowSetIterator.closeRowSetIterator(); 
    } 
} 

問候, WK

+1

將所有行設置爲'0',然後將currnt行設置爲'1' – maxx777

+0

我忘了寫 - 我正在使用oracle jdeveloper12c。親愛的max777 - 你可以放任何代碼嗎?我真的很感激。 –

回答

1

在對activeYear set方法模型層首先找到當前具有1的行並將其設置爲0,然後將當前行設置爲1.

+0

@Shay_Shmeltzer - 我的activeYear是一個瞬態屬性,它只位於我的VO中。哪些Java代碼可以獲取一個屬性的所有行並將其值設置爲0? –

0

您需要將值設置爲Active行中的所有行0那麼當前行設置爲1

爲了做到這一點,你需要遵循以下步驟:

爲您Transient view object創建iterator,然後對每行在iterator集合Active0

AppModuleImpl appModule = (AppModuleImpl)(JSFUtils.getApplicationModule("YourApplicationModuleName")); 
ViewObject transentViewObj = appModule.findViewObject("YourTransentViewObjectName"); 
RowSetIterator transentViewItr = transentViewObj.createRowSetIterator(null); 

while (transentViewItr.hasNext()) 
{ 
    transentViewItr.next().setAttribute("Active", 0); 
} 

2-然後,你需要從當前行和Active屬性設置爲1

DCBindingContainer bindings = (DCBindingContainer)getBindings(); 
DCIteratorBinding iteratorBinding = bindings.findIteratorBinding("IteratoerName"); 
iteratorBinding.getCurrentRow().setAttribute("Active", 1); 

注:你可以找到IteratoerName如下:去PAGE- >單擊bindings選項卡 - >在Executable列中可以找到可用的iterator。使用完全相同的名稱,指的是你的view object

+0

已經修復,我對你做了非常類似的解決方案,但是我創建了一個名爲deactive的方法,其代碼是: –

相關問題