2 つのラジオ ボタン グループがあります。2 つのボタンは、radioGroupLoanType と radioGroupLoanType です。
radioGroupLoanType の選択肢は、radioGroupLoanType の選択肢によって変わります。それはうまくいきます。
選択肢が 1 つしかない場合は、radioGroupLoanType のクリック イベントによって radioGroupLoanType の値が設定されます。発生しているように見えるのは、値が1クリックおきに設定されるだけです。選択範囲を 2 回クリックすると、適切な値が設定されます。
私が考えているのは、値が設定されているときに radioGroupLoanType の選択肢が設定されていないことです。これは、@DbLookup の代わりに @DbColumn を使用して、radioGroupLoanType の値の定数リストを作成することで証明できます。
これを行う方法に関する他のアイデアはありますか?
<xp:br></xp:br>
<xp:br></xp:br>
<xp:radioGroup id="radioGroupLoanType" layout="pageDirection">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var key = getComponent("radioGroupLoanType").getValue();
if (key == null) return;
var val = @DbLookup("","vwRateTypesByLoanTypesOrder",key,"RateName");
if (@IsError(val) || val.constructor == Array)
{
getComponent("radioGroupRateReq").setValue("");
}
else
{
getComponent("radioGroupRateReq").setValue(val);
}
}]]></xp:this.action>
</xp:eventHandler>
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:@DbColumn("","vwLoanTypesByOrder",2)}]]></xp:this.value>
</xp:selectItems>
</xp:radioGroup><xp:br></xp:br>
<xp:br></xp:br><xp:radioGroup id="radioGroupRateReq" layout="pageDirection" styleClass="PNCText">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:var key = getComponent("radioGroupLoanType").getValue();
var val = @DbLookup("","vwRateTypesByLoanTypesOrder",key,"RateName");
return (@IsError(val) || val == "") ? @DbColumn("","vwRateTypesByOrder",2) : val;
}]]></xp:this.value>
</xp:selectItems>
</xp:radioGroup>