Accountの新規画面を作りたいんです。
新規した後、Account一覧画面を表示されるということです。(一番上)
最終的な画面イメージ
新規取引先Test2020、Account一覧画面に表示される確認できる。(保存成功情報も表示)
Visualforce1.vfp
<apex:page controller="Apex1" showHeader="false" sidebar="false">
<apex:sectionHeader subtitle="Account表示一覧" title="Account"/>
<apex:form id="formId2">
<apex:pageMessages id="message2"/>
<apex:pageBlock title="Add Account">
<apex:pageBlockButtons location="both">
<apex:commandButton value="Save" action="{!save}" reRender="pageBlockTable,formId2" />
<apex:commandButton value="Cancel" action="{!cancel}" reRender="pageBlockTable,formId2,pb2" />
</apex:pageBlockButtons>
<apex:pageBlockSection title="Account Details" columns="1" id="pb2">
<apex:inputField value="{!act.name}" />
<apex:inputField value="{!act.Type}"/>
<apex:inputField value="{!act.Industry}"/>
<apex:inputField value="{!act.Phone}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
<apex:form id="formId">
<apex:pageMessages id="message"/>
<apex:pageBlock >
<apex:outputPanel id="showpanel">
<apex:pageBlockTable value="{!accounts}" var="acc" footerClass="footer" id="pageBlockTable">
<apex:column headerValue="Action" width="70px">
<apex:commandLink value="" onclick="" style="color:#015ba7;" id="edit" reRender="formId,message">
Edit
</apex:commandLink>
|
<apex:commandLink value="" onclick="" style="color:#015ba7;" id="del" reRender="formId,message">
Del
</apex:commandLink>
</apex:column>
<apex:column headerValue="取引先名" >
<apex:outputlink value="https://ap2.salesforce.com/{!acc.id}" target="_blank" >{!acc.Name}</apex:outputlink>
</apex:column>
<apex:column value="{!acc.Type}" />
<apex:column value="{!acc.Industry}" />
<apex:column value="{!acc.Phone}" />
</apex:pageBlockTable>
</apex:outputPanel>
</apex:pageBlock>
</apex:form>
</apex:page>
説明:
①<apex:form id=”formId2″> :二つformを利用可能、ボタンの影響するため、別々に配置しておきます。
②<apex:pageBlockButtons location=”both”> :デフォルト:location=”both”、上と下にボタンが表示されること。location=”bottom”のとき、下だけボタンを表示されること。
ボタンが表示されるページブロックの領域。使用可能な値には、「top」、「bottom」、または「both」があります。指定されていない場合、この値はデフォルトの「both」に設定されます。
注意: pageBlock の header ファセットが定義されている場合、ページブロックの上部に通常表示されるボタンよりもそのファセットが優先されます。同様に、pageBlock の footer ファセットが定義されている場合、ページブロックの下部に通常表示されるボタンよりもそのファセットが優先されます。
③<apex:commandButton value=”Save” action=”{!save}” reRender=”pageBlockTable,formId2″ />
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_commandButton.htm
action=”{!save}”:Apex1の中に「save」というメソッドがあるんです、保存した後、reRender=”pageBlockTable,formId2″の場所を更新できる。(データの更新とか)
④<apex:pageBlockSection title=”Account Details” columns=”1″ id=”pb2″>
標準の Salesforce ページレイアウト定義内のセクションに類似した、<apex:pageBlock> コンポーネント内のデータのセクションです。
title=”Account Details”:
ページブロックセクションのタイトルとして表示されるテキスト。
columns=”1″:
ページブロックセクションの単一の行に含めることができる列の数。単一の列は 2 つのセル (項目の表示ラベルおよびその値) にまたがります。pageBlockSection に子 inputField、子 outputField、または子 pageBlockSectionItem コンポーネントを使用する場合、それぞれの子コンポーネントは、1 つの列の 2 つのセルにまたがって表示されます。pageBlockSection に他のコンポーネントを使用する場合は、列の一番右のセルにのみ表示され、一番左のセルは空のままになります。pageBlockSection には 1 つ以上の列を指定できますが、Salesforce スタイルシートは 1 つまたは 2 つの列に対して最適化されています。指定されていない場合、この値はデフォルトの 2 に設定されます。
⑤<apex:inputField value=”{!act.name}” />
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_inputField.htm
Salesforce オブジェクトの項目に対応する値の HTML 入力要素です。<apex:inputField> コンポーネントは、項目が必須であるかまたは一意であるかどうかなどの関連項目の属性、およびユーザからの入力を取得するために表示するユーザインターフェースウィジェットを考慮します。
value=”{!act.name}”:
この inputField に関連付ける Salesforce 項目を参照する式。たとえば、取引先の名前項目の入力項目を表示する必要がある場合は、value=”{!account.name}” を使用します。
組織が期間指定換算レートを使用している場合は、inputField を currency 型の数式項目に関連付けることはできません。
ちなみに、<apex:inputText value=”{!act.name}” />もできます。
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_inputText.htm
text 型の HTML 入力要素です。
<apex:outputField>:
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_outputField.htm
Salesforce オブジェクトの項目の表示ラベルと値の参照のみ表示です。
<apex:outputField value=”{!act.name} & {!acc.Type}” >の形で、表示できません。
<apex:outputText>:
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_outputText.htm
Visualforce ページにテキストを表示します。
<apex:outputText value=”{!act.name} & {!acc.Type}” >の形で、表示できます。
Apex1.apxc
public with sharing class Apex1 {
public List<Account> accounts; //Account情報
public Account act{get;set;} //新規Account情報用
//コンストラクター
public Apex1() {
act = new Account(); //デフォルト New Accountオブジェクト
}
//変数 accounts のgetメソッド
public List<Account> getAccounts() {
try {
accounts= [select Id,Name,Type,Industry,phone from Account order by createddate desc limit 50 ];
return accounts;
} catch (Exception e) {
ApexPages.addMessages(e);
return null;
}
}
//キャンセル操作、何もない、画面をリフレッシュ
public PageReference cancel() {
return null;
}
//保存ボタン押下する、呼び出しメソッド
public PageReference save() {
ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, '保存しました。'));
//system.debug('act name:' + act.name + ' = ' + act.accountNumber);
upsert act;
return null;
}
}
説明:
①public Account act{get;set;}
Visualforce1.vfpの入力した値と合わせて、{get;set;}で、自動的に画面とApex交互して取得できる。
Javaのgetter、setterと同じです。
public void setAct(Account act){this.act=act;}
public Account getAct(){return act;}
②public Apex1()
クラスの名前と同じです。第一回Visualforce1を実行する同時、コンストラクターApex1() 中の内容を実行できます。
Apex1() はパラメータがある場合も、ない場合もあります。
③public PageReference cancel()
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/apex_system_pagereference.htm
PageReference は、ページのインスタンス化への参照です。多数の属性の 1 つである PageReferences は URL、一連のクエリパラメータ名および値で構成されます。
return null は画面の更新だけ。
④public PageReference save()
ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, ‘保存しました。’));
upsert act;
return null;
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_pages_message.htm
ApexPages.Severity.INFO:保存した後、画面の上に「’保存しました。’’みたいなメッセージを表示できます。
ApexPages.Severity 列挙
- CONFIRM
- ERROR
- FATAL
- INFO
- WARNING
upsert act; actの新規と更新する、upsert = insert+update。
Account act{get;set;}を通じて、画面から入力した値を取得し、直接保存できます。
return null; 保存した後、画面のAccount一覧に表示と更新、一番上に表示されるということ、createddate descの制限ですね。
以上となります。
何か問題がございましたら、コメントを頂れば嬉しいです。
Latest posts by zchao (see all)
- Auraでアクションボタン作成して画面のチェックボックス項目一括処理 - 2021年4月12日
- デフォルト項目値を含むレコード作成実例説明(defaultFieldValues) - 2021年1月9日
- Salesforce のノーコード・ローコード開発 - 2020年12月31日
转载请注明:zchao博客之家 » Apex+VisualforceでAccountオブジェクトのCRUDとページングクエリーCーAccountを新規(003)