是否可以分配值取决于多行编辑框值

时间:2016-01-22 01:29:36

标签: xpages

更新:代码缩减以及我正在尝试做的有关此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>
&#160;<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++)

1 个答案:

答案 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循环?

谢谢。