2016-01-22 54 views
0

更新:代碼減少和我試圖做的這個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 (i = getComponent("inputTextarea2").getValue(); i < getComponent("inputTextarea2").length; i++) 
+0

請將您的代碼降至最低:http://stackoverflow.com/help/mcve這將幫助您獲得答案。 –

+0

編輯整個內容:減少代碼並改進內容。對不便之處 – Learner

+0

對於你看起來像你在做什麼,檢查重複。多行編輯設計更多用於輸入而不是顯示。您可以在第一次重複中設置值(您的第一個多列字段),將所選值傳遞給您,然後刷新第二次重複。有很多例子可以向你展示。 –

回答

0

聲明:我更喜歡以下信息應該是評論,但我沒有足夠的權利來做到這一點。

這是我的想法,爲什麼你只有一個「是」或「否」的結果是這部分的原因是:(如果我的觀念是錯誤的,請指正)

if(creatededDishValue !=null){ 
    return "Yes"; 
} 
else 
{ 
    return "No"; 
} 

因爲createdDishValue它不會爲空,它會返回「是」,所以如果@DbLookup計算正確,它會查找一個值。因此,如果有10個值,結果將只顯示1「是」或1「否」。因此,如果您需要返回10是/否,則需要執行一些編程來實現此目的。

請注意:我還沒有嘗試你的for循環的代碼,但是我建議你看看這個網站: JavaScript for...in loop

據該網站,它提到

的for ... in循環用於遍歷對象的屬性。

那麼如何嘗試用循環代替循環代碼?

謝謝。

相關問題