如何在列中仅设置一个值

时间:2014-04-17 10:02:38

标签: java oracle oracle-adf jdeveloper

我对我的方法有疑问。我正在使用JDeveloper 12c。我有一个名为activeYear的方法,代码在这里:

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

它基于复选框。在我的应用程序中它的工作原理 - 我有一个按钮,它使用这种方法。如果我按下它,我当前的行会将其复选框值“Active”更改为选中状态。

重点是:我必须只激活一行,当我立即按下按钮时必须取消其他行。我该如何更改此代码?或者我应该再添加一个方法吗?

解决方案:

我的方法activeYear我添加了一个名为deactive的方法,代码在这里:

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

2 个答案:

答案 0 :(得分:1)

在activeYear的set方法的模型层中,首先找到当前具有1的行并将其设置为0,然后将当前行设置为1.

答案 1 :(得分:0)

您需要将所有行中的Active行的值设置为0,然后将当前行设置为1

为此,您需要按照以下步骤操作:

1 - 为您的iterator创建Transient view object,然后为iteratorActive中的每一行创建0AppModuleImpl appModule = (AppModuleImpl)(JSFUtils.getApplicationModule("YourApplicationModuleName")); ViewObject transentViewObj = appModule.findViewObject("YourTransentViewObjectName"); RowSetIterator transentViewItr = transentViewObj.createRowSetIterator(null); while (transentViewItr.hasNext()) { transentViewItr.next().setAttribute("Active", 0); } }。

Active

2 - 然后,您需要当前行并将1属性设置为DCBindingContainer bindings = (DCBindingContainer)getBindings(); DCIteratorBinding iteratorBinding = bindings.findIteratorBinding("IteratoerName"); iteratorBinding.getCurrentRow().setAttribute("Active", 1);

IteratoerName

注意:您可以找到bindings,如下所示:转到页面 - >点击iterator标签 - >您可以在Executable列中找到可用的view object。使用与您的{{1}}

完全相同的名称