单击按钮

时间:2016-02-22 07:31:18

标签: xpages

[2016年2月22日更新]

关于我之前关于列表框的问题,我可以在两个列表框之间移动值,并在收到有用的答案后保存值。

但是,如果我检索这些保存的值,列表框可​​以显示正确的值,但我无法移动这些值并获得异常消息。

如果我不保存它们,我只能在两个列表框之间移动值。

因此,我计划使用另一个按钮来删除列表框值。我不确定这是一个很好的实践/设计在xpages中,但我没有更好的方法来解决异常。

如果我在这个问题上造成任何不便,我很抱歉。谢谢。

[2016年2月23日更新]

根据最新的评论和回答,我注意到我犯了一个大错误,因为我把文件和价值混合在了一起。

我决定将设计分解为几个步骤来发现问题。

由于我可以在两个列表框之间移动值并保存它们。我使用另一个列表框测试我是否可以检索这些保存的值。

第三个列表框,我使用View Scope Variable(类似于列表框B)但我使用另一个变量名来避免模糊。

这是我的第三个列表框的代码:

var item = getComponent("comboBox4").getValue();

if ((item == null) || (null == item))
{ 
    return "void";
}
else if ((item != null) || (null != item))
{ 
    var lookupItem = @DbLookup(@DbName(),"ViewName", item,3  )
    return  lookupItem;
}
if (!viewScope.totalItems) 
{
    viewScope.totalItems = [lookupItem];
 }
 return viewScope.totalItems;

在组合框中,我使用onchange部分更新并应用于第三个列表框。当我运行程序时,我从组合框中选择一个值,第三个列表框可以显示我之前保存的相关值。

那部分没问题,所以我保留第三个列表框进行测试。并且我放了一些与组合框相关的虚拟但唯一的数据(以防止混淆)。

这是我的第一次尝试:我从组合框中选择一个值,第三个列表框可以显示我保存的相关值。我将一个值从列表框A移动到列表框B,然后单击“保存”。第三个列表框可以反映我保存的值。

在我的第二次尝试中:在第一次尝试之后,列表框B仍然包含列表框A中的值,所以这一次,我将该值移回列表框A并单击“保存”。在结果中,在第三个列表框中,我看到该值消失。

此时,列表框B中没有值,我添加了另外两个按钮,并编写类似的代码,假装在第三个列表框和列表框B之间移动值。

我测试它,我从组合框中选择值,第三个列表框显示正确的值。但是当我从第三个列表框中选择一个值并单击按钮将其移动到列表框A.我认为该值将移动到列表框A但结果没有任何反应。

我尝试另一种方式,我从列表框A中选择一个值,然后单击按钮将其移动到第三个按钮。结果再也没有发生。

尝试失败后,我认为问题出现在按钮中。

以下是两个按钮的代码

按钮1(将值移动到第三个列表框):

if (viewScope.ALstBoxItem) {
                        var sel = [].concat(viewScope.ALstBoxItem);
                        for (var i = 0; i < sel.length; i++) {
                            viewScope.totalItems.add(sel[i]); 
                            viewScope.AselectItems.remove(sel[i]);
                        }
                        viewScope.totalItems.sort(); 
                        viewScope.ALstBoxItem = "";
                    }

按钮2(将值移动到列表框A):

if (viewScope.TotalItemsVariable) {
                        var sel = [].concat(viewScope.TotalItemsVariable);
                        for (var i = 0; i < sel.length; i++) {
                            viewScope.AselectItems.add(sel[i]);                     
                            viewScope.totalInItem.remove(sel[i]); 
                        }        
                        viewScope.AselectItems.sort();                         
                        viewScope.TotalItemsVariable = "";
                    }

回想一下问题中的评论,我想我应该关注列表框中的值,而不是按钮。我在互联网上搜索隐藏选定值并找到这些网站几乎可以给我解决问题的想法:

xpages hiding/showing fields based on a combobox value

Hiding based on previous combo box choice in xpages?

https://www-10.lotus.com/ldd/ddwiki.nsf/dx/dynamical_elements_on_xpages.htm

我尝试应用这些摘要以适应我的情况但我保存后仍然无法移动值。

如果有人可以提供建议,我会感激不尽。非常感谢你。

1 个答案:

答案 0 :(得分:0)

请退一步思考你正在建设什么。你有两个列表框。它们包含值,而不是文档,因此deleteSelectedDocument简单操作无法工作。同样,访问删除文档也无关紧要。

此外,根据本主题之前的问题,我认为您没有在列表框中设置,而是使用事件来设置选项,即选项未突出显示并在列表框中选中,它们只是作为可供选择的选项位于列表框中。查看您用于向列表框添加选项的代码,并使用相应的代码删除选项。

我添加了一个与我认为你正在尝试构建的图像相对应的图像,以及“value”和“option”之间的区别,除了在你的示例中,它听起来像是你从ListBox 1移动选项一旦选择了ListBox 2,就不再使用“添加”按钮。或者为了进一步打破这个过程,听起来,当选择ListBox 1中的选项时,您希望将它从ListBox 1中的选项列表中删除,并将其添加到ListBox 2中的选项列表中。 ,听起来你想要将选项存储到NotesDocument中,当你返回时,根据NotesDocument中存储的内容设置ListBoxes的选项。

如果是这样,关于此主题的问题和答案已经为您提供了在流程中编写这些步骤所需的一切。

ListBox example