我在最新版本的Domino上安装了最新的扩展库。我使用一个简单的listBox,其中包含来自DBColumn的值(用于填充listBox)。
但是,我似乎无法获得listBox的选定值。我在网上捅了一会儿,发现了几件不同的东西,我试过了不成功。然后我开始阅读有关必须安装其他库等的内容。现在我很困惑。以下是我的代码。我想要做的就是从listBox中获取所选值,但是我真的想使用select2功能来搜索listBox。有人能指出我在正确方向上如何在变化时获得所选值吗?
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:bx="http://www.openntf.org/xsp/bootstrap">
<xp:scriptBlock id="scriptBlock2">
<xp:this.value>
<![CDATA[
$(document).ready(
function() { x$( "#{id:listBoxProperties}" ).select2()
.on("change", function(e) { XSP.partialRefreshPost(
"#{id:computedField2}" );
}
}
);
]]>
</xp:this.value>
</xp:scriptBlock>
<xp:panel>
<xp:listBox id="listBoxProperties" value="#{viewScope.selectedProperty}"
style="width:250px">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:listOfProperties = @DbColumn( @DbName(), 'vwAuditDocsByPropertyNo', 1 );
if( @IsError( listOfProperties ) )
"Error looking up properties: " + listOfProperties;
listOfProperties;
}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true"
refreshMode="complete">
</xp:eventHandler></xp:listBox>
<bx:select2PickerCombo id="select2Property"
for="listBoxProperties" placeHolder="-Select a Property-"
binding="#{javascript:viewScope.selectedProperty}">
</bx:select2PickerCombo>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1"
value="#{javascript:viewScope.selectedProperty;}">
</xp:text>
<xp:text escape="true" id="computedField2">
<xp:this.value><![CDATA[#{javascript:getComponent( "listBoxProperties").getValue()}]]></xp:this.value>
</xp:text>
</xp:panel>
</xp:view>
答案 0 :(得分:0)
我已经测试了你的场景,并且可以验证在使用bx:select2PickerCombo将listBox设置为Select2控件时,lixtBox的onchange事件不会触发。如果删除使用bx:select2PickerCombo,onchange事件将按预期触发。这是一个简单的例子(不使用bx:select2PickerCombo):
<xp:listBox id="listBoxProperties" value="#{viewScope.selectedProperty}" style="width:250px">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:["1","2","3"]}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="refreshField"></xp:eventHandler>
</xp:listBox>
<!--<bx:select2PickerCombo id="select2Property" for="listBoxProperties" placeHolder="-Select a Property-" binding="#{javascript:viewScope.selectedProperty}"></bx:select2PickerCombo>-->
<xp:text escape="true" id="refreshField" value="#{javascript:viewScope.selectedProperty;}"></xp:text>
您需要手动将Select2添加到listBox以使onchange事件正常工作。有关详细信息,请参阅此答案:Bootstrap4XPages plugin: how to catch a change event with Select2 Picker?