【问题标题】:Select All checkbox lotus xpages选择所有复选框 Lotus xpages
【发布时间】:2014-08-30 19:29:21
【问题描述】:

我正在开发一个有视图控件的 Xpages 应用程序。 我试图在列标题中放置一个复选框以选中视图中的所有复选框。 问题是当我从视图转到另一个页面时,它的行没有被检查,并且只在可见页面上进行选择。 所以,我希望能够选择视图所有页面中的所有行,当从一个页面切换到另一个视图时,没有选择就会消失。

【问题讨论】:

  • 我不确定这是否可以通过传统的视图控件实现。您可以使用重复控件来完成此操作,让每个复选框保存一个值。
  • 看看这个以获得灵感:hasselba.ch/blog/?p=1062
  • 从答案和其他 cmets 中可以看出,这并不是一项非常简单的任务。然而,我的主要问题是你想对所有选定的条目做什么?大多数时候,还有其他方法可以实现目标。或者换句话说:来自 Notes 客户端开发并转向 Xpages,我们自然倾向于寻找类似的解决方案,就像我们一直使用的解决方案一样。哪些往往不是最好的

标签: xpages lotus-domino


【解决方案1】:

视图和选择存在几个问题。

首先,在页面之间移动的分页器操作不会处理“选择所有行”数据,因为默认情况下它启用了部分执行。如果您将partialExecute="false" 放入您的寻呼机,您将看到页面之间将保留“选择所有行”复选框。

但是,如果您在列和 columnHeader 上有一个复选框,则该组件会在后端维护一个 selectedIds 数组。不幸的是,这个数组只包含可见的选择。因为数组由 viewPanel 组件维护,它不知道未显示的数据条目列表。

此外,复选框实现不提供任何均匀机制,您可以在后端抓取选择以在页面之间缓存它们。

要确定全选复选框可以通过一个小技巧来实现。假设您使用所有默认样式;

<xp:inputHidden
    id="inputAllSelected"
    value="#{viewScope.allSelected}"
    defaultValue="false"></xp:inputHidden>
<xp:scriptBlock
    id="scriptBlock1">
    <xp:this.value><![CDATA[
function getSelectAllCheckbox() {
    return dojo.query("input.xspCheckBoxViewColumnHeader")[0];
}

function toggleSelectAll(){
    dojo.byId("#{id:inputAllSelected}").value=getSelectAllCheckbox().checked;
}

dojo.addOnLoad(function() { 
    dojo.connect(getSelectAllCheckbox(), "onchange", toggleSelectAll);
});
]]></xp:this.value>
</xp:scriptBlock>

要在页面之间缓存复选框,您可以使用自定义列来实现自己的复选框。我建议使用数据表组件以获得更大的灵活性。

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多