2013-11-20 2 views
1

Моя основная цель - Умножить два поля и показать/сохранить ответ в другом вычисленном поле (поле пробега). Я хочу умножить вычисленное поле totalKM (не в форме) полем поля ввода perKM (в форме) по умолчанию .52.Умноженное значение умножения значением поля редактирования

Я добавил таблицу ниже со всеми полями для удобства.

<xp:table> 
    <xp:tr> 
     <xp:td> 
      <xp:label value="Mileage:" 
       id="mileage_Label1" for="mileage1"> 
      </xp:label> 
     </xp:td> 
     <xp:td> 
      <xp:text escape="true" id="mileage"> 
       <xp:this.converter> 
        <xp:convertNumber type="number"></xp:convertNumber> 
       </xp:this.converter> 
       <xp:this.value> 
        <![CDATA[#{javascript:return claimDoc.getItemValue("perKM");}]]> 
       </xp:this.value> 
      </xp:text> 
     </xp:td> 
     <td></td> 
     <td></td> 
    </xp:tr> 
    <xp:tr> 
     <xp:td> 
      <xp:label value="Total KM" id="label1"></xp:label> 
     </xp:td> 
     <xp:td> 
      <xp:text escape="true" id="totalKM" 
       style="font-weight:bold"> 
       <xp:this.value> 
        <![CDATA[#{javascript:var cView:NotesView = database.getView("expenses"); 
         var nav:NotesViewNavigator = cView.createViewNav(); 

         var entry:NotesViewEntry = cView.getEntryByKey((@Name("[CN]",context.getUser().getDistinguishedName())),true); 
         entry = nav.getPrev(entry); 
         if (entry == null) { 
         //donothing 
         } 
         else { 
          return entry.getColumnValues()[2]; 
          } }]]> 
       </xp:this.value> 
      </xp:text> 
     </xp:td> 
     <xp:td> 
      by 
      <xp:inputText id="inputText1" 
       style="width:30px" value="#{claimDoc.perKM}" 
       defaultValue=".52"> 
       <xp:this.converter> 
        <xp:convertNumber type="number"></xp:convertNumber> 
       </xp:this.converter> 
      </xp:inputText> 
      cents 
     </xp:td> 
     <xp:td> 
     </xp:td> 
    </xp:tr> 
</xp:table> 
+0

Если вы используете управляемый компонент или POJO, вы можете привязать свои поля к bean-компоненту, а затем поместить свой код в метод getter. Используйте событие onChange для обновления полученного поля. (Лучше всего поместить поле в контейнер и обновить контейнер.) Для этого вам понадобятся базовые знания Java. Я написал сообщение в блоге, которое может вам помочь: http://notesspeak.blogspot.com/2013/06/dynamic-computed-values-in-xpage.html –

+0

Стив положил ваш комментарий в ответ, чтобы его можно было принять. Я бы тоже использовал Java, но он мог бы работать с объектом SsJS. – stwissel

ответ

0

Вы можете выполнить это с использованием java и управляемых bean-компонентов. Это не единственный способ сделать это, но я бы рискнул наилучшим образом.

Вы должны связать свои поля к управляемому компоненту непосредственно, как это: enter image description here

сделать поля с помощью Edit Box (даже для результата, который не редактируется)

В управляемом Java боб, для значения вы хотите автоматически вычислять сделать что-то вроде этого: enter image description here

  1. удалить или закомментировать «сеттер»
  2. Поместите код, который вычисляет результат в «добытчика»
  3. Потому что вы закомментировал сеттер, результирующее поле не редактируется

Последнее, что вам нужно сделать, это создать частичное обновление для обновления контейнера, который содержит поле, которое вы хотите вычислить. Он может быть в том же или другом контейнере, что и редактируемые поля.


Вот ссылка на блоге я описывал его, как я осуществил это: http://notesspeak.blogspot.com/2013/06/dynamic-computed-values-in-xpage.html

Если вы не использовали управляемые бобы или Java перед ним, это хорошо стоит вкладывать время, чтобы посмотреть этот двухчасовой класс на управляемых бобах от Connect 2013. Russ Maher - отличный учитель. http://ibmtvdemo.edgesuite.net/software/lotus/connect_2013/01-Sunday/JMP402/JMP402.html

Есть также много сообщений в блоге, а также заметки в 9 видео.

+0

Ваш ответ - большое спасибо за весь фон! Это видео великолепно. – sitrucj

+0

Рад, что вы нашли это полезным. Как только вы пойдете по этому пути, он изменит путь (к лучшему), который вы думаете о xpages. В то же время этот пост хорошо читается: http://www.timtripcony.com/blog.nsf/d6plinks/TTRY-955KHF –

+1

Должен признать, что сначала я посмотрел на ваш ответ и подумал: «Это сумасшествие и но после просмотра видео я вижу, что с небольшим количеством дополнительных настроек я могу получить именно то, что искал в начале (это было var * var = field). Плюс я уже знаю java, поэтому BAM! – sitrucj

Смежные вопросы