我正在尝试使用组合框设置可重复使用的自定义控件以与Bootstrap一起使用。自定义控件已经具有Bootstrap所需的所有div,样式等。
现在,我添加了一个属性定义(类型:字符串,允许多个实例),这样当您在任何表单上使用自定义控件时,您可以向组合框添加可选值:
作为组合框的值属性,我添加了一个带有以下JavaScript的计算项:
compositeData.listValues
当我使用自定义控件时,我可以单独添加值,一个实例用于一个可选值,它确实很有效:
但是,当我计算值时,让我们说,从关键字文档或视图列中获取值列表:
组合框值列表如下所示:
如何通过属性定义将值列表传递给组合框?它有可能吗?
更新:有没有办法循环通过属性定义的实例?这样我可以检查当前实例是单个文本值还是数组,将所有值的列表放在一起并将其作为值列表返回。
非常感谢你的帮助!
答案 0 :(得分:1)
在“自定义控件”属性中,在“类型”旁边,将其保留为“字符串”,然后单击文件夹图标。在那里你可以选择复杂的类型。
在那里,你可以在众多选择中选择视图列。
答案 1 :(得分:0)
更新:David Leedy指出了关于使用逗号作为@ Implode / @ Explode的分隔符的警告。如果您的任何值包含逗号,则可能会导致问题。所以,我修改了我的答案来解释:
首先,我要感谢所有看过这个问题和/或做出回应的人。
今天早上我有一个顿悟,并找到了解决方案。可能不是很优雅但它有效。
由于我们将使用@ Implode / @ Explode构建组合框的值列表,我们需要为可重用的自定义控件添加另一个属性定义。此属性将用于传递信息,计算值列表将如何分离:
当我向自定义属性添加值时,从关键字文档获取值列表的计算值应如下所示:
var oView:NotesView = database.getView('$vwSYSLookupKeywords');
var oDocument:NotesDocument = oView.getDocumentByKey('.DBProfile', true);
@Implode(oDocument.getItemValue('iTxtTest'),';')
如您所见,在本例中我使用“;”破坏清单。
这是我的自定义属性列表:
这是我使用可重用自定义控件的整个自定义控件的标记:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xc:ccLegend
listSeparator=";">
<xc:this.listValues>
<xp:value>Test 1</xp:value>
<xp:value>Test 2</xp:value>
<xp:value>#{javascript:var oView:NotesView =
database.getView('$vwSYSLookupKeywords'); var
oDocument:NotesDocument = oView.getDocumentByKey('.DBProfile',
true); @Implode(oDocument.getItemValue('iTxtTest'),';')}</xp:value>
</xc:this.listValues>
</xc:ccLegend>
</xp:view>
如果我现在在组合框的计算值列表中使用以下内容:
var sSeparator = compositeData.listSeparator;
@Explode(@Implode(compositeData.listValues, sSeparator), sSeparator);
值在组合框中正确显示:
这也适用于@DBColumn和@DBLookup!
如果您有更好的解决方案,请随时在此处发布。
答案 2 :(得分:0)
您是否尝试将属性设置为object而不是string。这应该允许您通过爆炸和爆炸将数组传递给自定义控件。