0

私はvisualforce/salesforceに非常に慣れていません。これはひどい初心者なので、おそらく簡単な問題はご容赦ください。

会議の予算を追跡するためのページを作成しています。基本的に、ユーザーは1つのフィールドに予算として設定された金額を入力し、次のフィールドに実際のコストを入力し、3番目のフィールドにSF / VFが2つの数値を計算し、差を表示する必要があります。フィールドを設定し(これは簡単だったと思います)、ページを設定しました。現在、フィールドに情報を入力して[保存]をクリックしても何も起こりません。

これはすべて私の頭上にあり、私は文学で答えを見つけようとしていますが、あまり運がありません。

コードは次のとおりです。

    <apex:page standardController="Conference__c" sidebar="true"> 
    <apex:sectionHeader title="Conference Budget" subtitle="{!Conference__c.name}"/> 
        <apex:form > 
          <apex:pageBlock title="Conference Budget" id="thePageBlock" mode="edit"> 
            <apex:pageBlockButtons > 
                    <apex:commandButton value="Save" action="{!save}"/> 
                    <apex:commandButton value="Cancel" action="{!cancel}"/>                 
            </apex:pageBlockButtons> 
             <apex:actionRegion >
 <apex:pageBlocksection title="Conference Budget"> 
            <apex:panelGrid columns="4" width="400px" cellspacing="5px">                

                <apex:outputText value="Item" id="Item"/>
                <apex:outputText value="Budgeted" id="Budgeted"/>
                <apex:outputText value="Actual" id="Actual"/>
                <apex:outputText value="Difference" id="Difference"/>

                <apex:outputText value="Advertising" id="advertising"/>
                <apex:inputField value="{!Conference__c.Advertising_b__c}"/>
                <apex:inputField value="{!Conference__c.Advertising_a__c}"/>
                <apex:inputField value="{!Conference__c.Advertising_d__c}"/> 
<apex:outputText value="Totals" id="totals"/>
                <apex:inputField value="{!Conference__c.Total_Cost_b__c}"/>
                <apex:inputField value="{!Conference__c.Total_Cost_a__c}"/>
                <apex:inputField value="{!Conference__c.Total_Cost_d__c}"/>


                <apex:actionStatus startText="applying value..." id="status"/>

                </apex:panelGrid>
              </apex:pageBlocksection> 
                              </apex:actionRegion>



      </apex:pageBlock> 
 </apex:form> 
 </apex:page>
4

1 に答える 1

0

認識すべき主なことは、Salesforceは(何らかのワークフローを設定していない限り)これらのフィールドを自動的に計算しないということです。さらに、アクション領域内にレコードを保存するだけでは、レコードを保存して再ロードし、ページを再度表示することはできません。私の知る限り、保存すると、ユーザーはレコードの詳細ページにリダイレクトされます。

この単純な計算では、レコードを保存する前にtiを計算する場合は、単純なjavascriptを使用します。

<apex:page standardController="Conference__c" sidebar="true">
  <!-- I use JQUERY because Salesforce IDs are very difficult to utilize in standard JS -->
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
  <script type="text/javascript">
    var $j = jQuery.noConflict(); // SFDC uses $ so we need to assign jQuery to something else
    function recalcAd() {
      try{
        var budget =  parseFloat( $j("input[id$='ad-b']").val() );
        var actual =  parseFloat( $j("input[id$='ad-a']").val() );
        $j("input[id$='ad-d']").val(budget - actual);
      } catch (e) {
        $j("input[id$='ad-d']").val("");
      }
    }
    function recalcTot() {
      try{
        var budget =  parseFloat( $j("input[id$='tot-b']").val() );
        var actual =  parseFloat( $j("input[id$='tot-a']").val() );
        $j("input[id$='tot-d']").val(budget - actual);
      } catch (e) {
        $j("input[id$='tot-d']").val("");
      }
    }
  </script>
  <apex:sectionHeader title="Conference Budget" subtitle="{!Conference__c.name}"/> 
    <apex:form > 
      <apex:pageBlock title="Conference Budget" id="thePageBlock" mode="edit"> 
      <apex:pageBlockButtons > 
          <apex:commandButton value="Save" action="{!save}"/> 
          <apex:commandButton value="Cancel" action="{!cancel}"/>         
      </apex:pageBlockButtons> 
      <apex:pageBlocksection title="Conference Budget"> 
        <apex:panelGrid columns="4" width="400px" cellspacing="5px"> 
          <apex:outputText value="Item" id="Item"/>
          <apex:outputText value="Budgeted" id="Budgeted"/>
          <apex:outputText value="Actual" id="Actual"/>
          <apex:outputText value="Difference" id="Difference"/>
          <apex:outputText value="Advertising" id="advertising"/>
          <apex:inputField id="ad-b" value="{!Conference__c.Advertising_b__c}" onChange="recalcAd(); return true;"/>
          <apex:inputField id="ad-a" value="{!Conference__c.Advertising_a__c}" onChange="recalcAd(); return true;"/>
          <apex:inputField id="ad-d" value="{!Conference__c.Advertising_d__c}"/> 
          <apex:outputText value="Totals" id="totals"/>
          <apex:inputField id="tot-b" value="{!Conference__c.Total_Cost_b__c}" onChange="recalcTot(); return true;"/>
          <apex:inputField id="tot-a" value="{!Conference__c.Total_Cost_a__c}" onChange="recalcTot(); return true;"/>
          <apex:inputField id="tot-d" value="{!Conference__c.Total_Cost_d__c}"/>
        </apex:panelGrid>
      </apex:pageBlocksection> 
    </apex:pageBlock> 
 </apex:form> 
 </apex:page>

コードに、合計を再計算するだけでなく、不要と思われるアクション領域を削除するスクリプトをいくつか追加しました。私はそれをテストすることができませんでした(私はそのオブジェクトを私のアカウントに設定していないので)が、それはあなたのために働くはずだと思います。

于 2012-06-15T19:13:32.180 に答える