viewPanel
有一列showCheckbox="true"
。
是否可以限制用户只选择viewPanel列出的一行/文档(而不是多行/文档)?
答案 0 :(得分:6)
不在视图面板中。 View Panel旨在提供一种功能受限的快速简单方法。
另一种(可能更好的)方法可能是让另一列具有链接或图像,以触发您需要的任何功能。这将允许用户通过单击而不是两次触发功能。 View Panel允许您将控件放在列中,而不是仅映射到基础视图中的列。
或者,您可以手动将复选框添加到列,映射到范围变量,然后以编程方式选中/取消选中。
答案 1 :(得分:3)
我在这个NotesIn9节目中有一个例子:http://notesin9.com/index.php/2011/07/11/notesin9-ee-009-using-java-hashmaps-and-treemaps-with-xpages/
现在我的例子中我做了多个值。但是如果你将“选定的”文档id保存在一个单独的值字段中,而不仅仅是一个范围变量,那么如果不是HashMap或ArrayList,那么你就得到了你想要的东西。一次一份文件。
答案 2 :(得分:2)
我同意Paul Stephans(也赞成他的答案,因为我认为这将是Nest解决方案)但是如果你坚持在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>
Maby代码需要一些改进,但这应该是您的选择。
答案 3 :(得分:1)
虽然可能不是最佳解决方案,但这是一种可能性。
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;
}
在检查文档时将其关闭并传递视图控件名称和当前文档的unid。
请原谅任何错别字。我正在通过手机写信。编辑:如果你不必使用视图控件,那么David Leedy的建议就是你要走的路。将选定的unid存储在范围变量中,然后确定选择了哪个重复行框。您也可以考虑使用单选按钮而不是复选框,因为前者被用户理解为单个选择器。