Возможно ли присвоить значение, зависит от многострочного значения поля редактирования

124
14

Обновление: сокращение кода и дальнейшее описание этого веб-приложения, которое я пытаюсь сделать.

<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 (i = getComponent("inputTextarea2").getValue(); i < getComponent("inputTextarea2").length; i++)

спросил(а) 2021-01-19T16:40:58+03:00 3 месяца, 2 недели назад
1
Решение
115

Отказ от ответственности: я предпочитаю, чтобы следующая информация была комментарием, но у меня недостаточно прав для этого.

Вот моя мысль, почему у вас есть только один "Да" или "Нет" для результата в этой части: (если моя концепция неверна, пожалуйста, исправьте меня)

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

Поскольку createdDishValue не равен null, он вернет "Да", поэтому, если вычисление @DbLookup верное, оно будет искать значение. Поэтому, если 10 значений, результат будет отображать только 1 "Да" или 1 "Нет". Поэтому, если вам нужно вернуть 10 Да/Нет, для этого вам нужно выполнить некоторые программы.

Обратите внимание: я еще не пробовал ваш код цикла, но я бы рекомендовал вам ознакомиться с этим сайтом: JavaScript для... в цикле

Согласно веб-сайту, он упомянул

Цикл for... in используется для прокрутки свойств объекта.

Итак, как насчет того, чтобы попытаться использовать for в цикле вместо цикла в вашем коде?

Спасибо.

ответил(а) 2021-01-19T16:40:58+03:00 3 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема