xpages列显示复选框

xpages列显示复选框,xpages,Xpages,有一个视图面板,其中有一列带有showCheckbox=“true” 是否可以限制用户仅选择视图面板列出的一行/文档(而不是多行/文档)?不在视图面板中。视图面板旨在提供一种功能受限的快速、简单的方法 另一种(可能更好的)方法可能是使用另一列链接或图像来触发您需要的任何功能。这将允许用户通过一次点击而不是两次点击来触发功能。“视图”面板允许您在列中放置控件,而不仅仅是映射到基础视图中的列 或者,您可以手动向列添加复选框,映射到范围变量,并通过编程方式选中/取消选中。虽然可能不是最佳解决方案,但有

有一个
视图面板
,其中有一列带有
showCheckbox=“true”


是否可以限制用户仅选择视图面板列出的一行/文档(而不是多行/文档)?

不在视图面板中。视图面板旨在提供一种功能受限的快速、简单的方法

另一种(可能更好的)方法可能是使用另一列链接或图像来触发您需要的任何功能。这将允许用户通过一次点击而不是两次点击来触发功能。“视图”面板允许您在列中放置控件,而不仅仅是映射到基础视图中的列


或者,您可以手动向列添加复选框,映射到范围变量,并通过编程方式选中/取消选中。

虽然可能不是最佳解决方案,但有一种可能性

function deselectOtherDocs(viewName, currentDocId) {
var viewPanel:com.ibm.xsp.component.xp.XspViewPanel = getComponent(viewName);
var selectedIds = viewPanel.getSelectedIds();
for(var i=0; i<selectedIds.length; ++i){
if(selectedIds[i]!=currentDocId){viewPanel._xspSetIdUnchecked(selectedIds[i])}
return;
}
函数取消选择其他文档(视图名称、当前文档ID){
var viewPanel:com.ibm.xsp.component.xp.XspViewPanel=getComponent(viewName);
var selectedIds=viewPanel.getSelectedIds();

对于(var i=0;i我同意Paul Stephans的观点(也对他的答案投了赞成票,因为我认为这将是最新的解决方案),但如果您坚持要在viewPanel中添加这样的功能,可以通过添加客户端脚本来防止用户选择多个元素:

首先将
styleClass=“rowCB”
添加到复选框行,并将此代码插入xpage:

<xp:scriptBlock>
    <xp:this.value><![CDATA[dojo.ready(function(){
    dojo.query('.rowCB>input').connect("onclick", function(evt){ 
              var target = evt.target.id;
              if(!window.crrCheckedElement){
                window.crrCheckedElement = evt.target.id;
              }else if(window.crrCheckedElement != target){
                    alert("You can select only one item!");
                    evt.target.checked = false;
              }else if(window.crrCheckedElement == target){
                  window.crrCheckedElement = "";
              }
            })
    });]]></xp:this.value>
</xp:scriptBlock>


可能代码需要一些改进,但这应该是你的方法。

Paul可能是对的。我的替代方法是使用repeat控件。你可以让它看起来像你想要的那样。包括view控件

我在这张便条中有一个例子:


现在在我的示例中,我使用了多个值。但是如果您保持“选中”,而不是HashMap或ArrayList文档id在一个值字段中,就像一个作用域变量一样。然后你就可以得到你想要的。一次一个文档。

是的,使用javascript/jQuery,但我不相信你能在服务器端做到这一点。如果你对编写客户端javascript感到满意,你可以找到它。CSJS是一种方法。我想指出的是,你可能会遇到麻烦传呼…@MichaelSaiz我会试试,然后告诉你。