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我会试试,然后告诉你。