我对我的方法有疑问。我正在使用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
答案 0 :(得分:1)
在activeYear的set方法的模型层中,首先找到当前具有1的行并将其设置为0,然后将当前行设置为1.
答案 1 :(得分:0)
您需要将所有行中的Active
行的值设置为0
,然后将当前行设置为1
为此,您需要按照以下步骤操作:
1 - 为您的iterator
创建Transient view object
,然后为iterator
集Active
中的每一行创建0
到AppModuleImpl 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}}