更新:代码缩减以及我正在尝试做的有关此Web应用程序的进一步说明。
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript: sessionScope.DishNameValue;
}]]></xp:this.value>
</xp:text>
<xp:br></xp:br>
<xp:br></xp:br>
 <xp:table style="width:636.0px">
<xp:tr>
<xp:td style="width:250.0px">
<xp:inputTextarea id="inputTextarea2">
<xp:this.value><![CDATA[#{javascript:
var selectedDishNameRestaurant = @DbLookup(@DbName(),"RestaurantDishNameView", (getComponent("computedField1").getValue()),3)
if(selectedDishNameRestaurant != null)
{
return selectedDishNameRestaurant;
}
else
{
return "nothing here"
}
}]]></xp:this.value>
<xp:this.multipleSeparator><![CDATA[#{javascript:"\n"}]]></xp:this.multipleSeparator>
<xp:this.rendered><![CDATA[#{javascript:if(getComponent("computedField1").getValue() != null)
{
return true;
}}]]></xp:this.rendered>
</xp:inputTextarea>
</xp:td>
<xp:td style="width:250.0px">
<xp:inputTextarea id="inputTextarea4">
<xp:this.value><![CDATA[#{javascript:var selectedDishNameRestaurant = @DbLookup(@DbName(),"RestaurantDishNameView", (getComponent("computedField1").getValue()),3)
var createdDishValue = @DbLookup(@DbName(),"CreatedDishView", selectedDishNameRestaurant,2);
var restaurantDishValue = @DbLookup(@DbName(),"RestaruantDishView", createdDishValue,1);
if(creatededDishValue !=null){
return "Yes";
}
else
{
return "No";
}
}]]></xp:this.value>
<xp:this.multipleSeparator><![CDATA[#{javascript:"\n"}]]></xp:this.multipleSeparator>
<xp:this.rendered><![CDATA[#{javascript:if(getComponent("computedField1").getValue() != null)
{
return true;
}}]]></xp:this.rendered>
</xp:inputTextarea>
</xp:td>
<xp:td style="width:250.0px">
<xp:inputTextarea id="inputTextarea6">
<xp:this.value><![CDATA[#{javascript:var selectedDishNameRestaurant = @DbLookup(@DbName(),"RestaurantDishNameView", (getComponent("computedField1").getValue()),3)
var createdDishValue = @DbLookup(@DbName(),"CreatedDishView", selectedDishNameRestaurant,2);
var restaurantDishValue = @DbLookup(@DbName(),"RestaruantDishView", createdDishValue,1);
var createdDate = @DbLookup(@DbName(),"RestaruantDishView", createdDishValue,2);
if(createdDishValue !=null){
return createdDate;
}
else
{
return "";
}
}]]></xp:this.value>
<xp:this.multipleSeparator><![CDATA[#{javascript:"\n"}]]></xp:this.multipleSeparator>
<xp:this.rendered><![CDATA[#{javascript:if(getComponent("computedField1").getValue() != null)
{
return true;
}}]]></xp:this.rendered>
</xp:inputTextarea>
</xp:td>
</xp:tr>
</xp:table>
在第一页:
在第二页:
将有一个计算字段来显示所选值。(这部分工作正常,因为我使用会话变量来存储值)
有一个多行编辑框,它将在单独的行中显示值取决于计算字段的值。例如,如果用户选择菜肴名称,那么它将显示哪个餐馆有这道菜。在这一部分,我使用@DbLookup来实现,在这个阶段,程序仍然正常工作。
还有另一个多行编辑框。它的显示值取决于第一个多行编辑框。例如,第一多行编辑框可以显示具有特定菜肴名称(由用户选择)的餐馆列表。第二个多行编辑框将显示餐厅是否创建了菜肴的值,如果餐厅创建菜肴,则返回“是”,否则返回“否”。
在这部分中,无论第一个多行编辑框中有多少个值,我在第二个多行编辑框中只能得到一个“是”或一个“否”。
有人会让我知道如何让第二个多行编辑框显示所有值吗?谢谢。
我尝试使用for循环但不起作用。
for (i = getComponent("inputTextarea2").getValue(); i < getComponent("inputTextarea2").length; i++)
答案 0 :(得分:0)
免责声明:我更喜欢以下信息应该是评论,但我没有足够的权利这样做。
以下是我的想法,为什么你只有一个&#34;是&#34;或&#34;否&#34;结果是在这一部分:(如果我的概念错了,请纠正我)
if(creatededDishValue !=null){
return "Yes";
}
else
{
return "No";
}
因为createdDishValue不为null,它将返回&#34; Yes&#34;,所以如果@DbLookup计算正确,它将查找一个值。因此,如果有10个值,结果将只显示1&#34;是&#34;或1&#34;否&#34;。因此,如果您需要返回10是/否,则需要进行一些编程才能实现。
请注意:我还没有尝试过你的循环代码,但我建议你看一下这个网站: JavaScript for...in loop
根据该网站,它提到了
for ... in循环用于遍历对象的属性。
那么如何在代码中尝试使用in循环而不是for循环?
谢谢。