2012-10-12 2 views
1

Orbeon 폼 빌더에서 eform을 개발 중입니다. 여기에서는 리피터 (새로운 반복) 컨트롤을 사용하고 있습니다. 그 컨트롤 안에는 텍스트 컨트롤의 많은 행이 있습니다. 사용자가 해당 컨트롤에 삽입 할 값으로 계산을 만들고 싶습니다. 두 개의 열에 "항목 수"와 "단가"가 있다고 가정합니다. 내부에는 많은 행이 있습니다. 즉, 사용자는 동적으로 값을 삽입합니다.새 반복 컨트롤에있는 텍스트 컨트롤 내의 계산

다음으로이 repeater 컨트롤은 단추 이벤트없이 전체 금액을 표시해야하는 텍스트 컨트롤입니다.

예. 테이블처럼 중계기 구조를 가정하자 :

column name(Number of items---unit price) 
first value(1 ----100) 
second value(5----200) 

총량 격자의 수는 사용자에 따라 증가 할 수있다 (1100)으로 텍스트 제어부에 표시한다 (여기있다 2).

+0

양식 작성기를 사용하거나 "손으로"XForm을 작성 하시겠습니까? 후자의 경우 4.0 마일스톤 빌드를 사용하고 있다고 가정합니다. (반복은 3.9의 Form Builder에서 지원되지 않습니다.) – avernet

답변

0

총 비용을 알아 내기 위해 정상적인 계산 방법을 찾지 못했습니다. 그래서 꽤 작은 XQuery를 사용하여 문제를 해결했습니다.

양식 작성 도구 또는 "손으로"코딩하는 Xforms를 사용하고 있는지는 모르지만 "손으로"사용하여 개발합니다. 아래는 Orbeon Xforms Sandbox에서 실행할 수있는 완전한 Xform 코드입니다.

<xhtml:html xmlns:xforms="http://www.w3.org/2002/xforms" 
    xmlns:f="http://orbeon.org/oxf/xml/formatting" 
    xmlns:xhtml="http://www.w3.org/1999/xhtml" 
    xmlns:xxforms="http://orbeon.org/oxf/xml/xforms" 
    xmlns:ev="http://www.w3.org/2001/xml-events" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    > 

    <xhtml:head> 

     <xforms:model xmlns:xforms="http://www.w3.org/2002/xforms" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema" id="main-model"> 

      <xforms:instance id="form-instance"> 
      <form> 
       <sale> 
        <number-of-units>1</number-of-units> 
        <unit-price>100</unit-price> 
       </sale> 
       <sale> 
        <number-of-units>2</number-of-units> 
        <unit-price>500</unit-price> 
       </sale> 
      </form> 
      </xforms:instance> 


     </xforms:model> 
    </xhtml:head> 

    <xhtml:body> 

     <table> 
     <tr> 
      <td> 
       Total price: 
      </td> 
      <td> 
       <xforms:output value="sum(
             for $i in instance('form-instance')/sale 
              return $i/number-of-units * $i/unit-price 
             ) 
             " /> 
      </td> 
     </tr> 
     </table> 

    </xhtml:body> 
</xhtml:html> 

브라우저 출력 :

enter image description here

당신이 양식 빌더를 사용하는 경우 경우, 당신은 결과의 표현을 선택하고 원하는 경우 바인딩 정의의 계산 속성에 사용할 수 있습니다.

표현 :

sum(
    for $i in instance('form-instance')/sale 
     return $i/number-of-units * $i/unit-price 
    )           

행운을 빕니다!

관련 문제