【Salesforce】PageBlockTableとDataTableの違いについて

【Salesforce】PageBlockTableとDataTableの違いについて

Visualforceでレコードのリストを表示する画面を開発していました。

それほど難しい処理はなかったため、簡単に作成できるはずでした。

レコードのリストを作成し、Visualforceタグで表示するまでは良かったのですが、見た目がカッコよくないのです。

ちゃんとVisualforceタグを使っているのに、Salesforceっぽいレコードのリストにならないんですね。

原因は簡単なことで、使用するVisualforceタグが間違っていたのです。

私が書いていたコードはこんな感じです。

<apex:dataTable value="{!recordList}" var="record" >

  <apex:column >
    <apex:facet name="header" >
      <apex:outputText value="項目1" />
    </apex:facet>
    <apex:outputField value="{!record.header}" />
  </apex:column>

  <apex:column >
    <apex:facet name="header" >
      <apex:outputText value="項目2" />
    </apex:facet>
    <apex:outputField value="{!record.field2}" />
  </apex:column>
  
</apex:dataTable>

間違いに気が付いてから修正したものはこんな感じです。

<apex:pageBlockTable value="{!recordList}" var="record" >

  <apex:column >
    <apex:facet name="header" >
      <apex:outputText value="項目1" />
    </apex:facet>
    <apex:outputField value="{!record.header}" />
  </apex:column>

  <apex:column >
    <apex:facet name="header" >
      <apex:outputText value="項目2" />
    </apex:facet>
    <apex:outputField value="{!record.field2}" />
  </apex:column>
  
</apex:pageBlockTable>

見て分かる通り、テーブルを作成する際に使うタグが異なりますね。

 

Visualforceでリストを表示する際、「apex:pageBlockTable」や「apex:dataTable」を使います。

場合によっては「apex:repeat」タグを使うこともありますね。

どう違うかを調べてみると、全然違いました。

「apex:pageBlockTable」の利点は、CSSを指定しなくてもSalesforceっぽいレイアウトにしてくれます。

レイアウトを特に指定されていない場合はこちらを使うと便利ですね。

「apex:dataTable」の利点は、「apex:pageBlock」の外でもレコードを表示することが出来る点でしょうか。

レイアウトが指定されている場合なんかもこちらを使います。

 

ちなみに、私は調べるまで「apex:dataTable」を使ったことがありませんでした。

恥ずかしながら、レイアウトを指定されている場合は「table」タグの中で「apex:repeat」をしていました。

使ったことはありませんでしたが、ちゃんと使うべきタイミングがあったということですね。

適切にタグを選択して開発をスムーズに進めていきたいですね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です