function readOnly(count){ }
Don't have an account?
Search for an answer or ask a question of the zone or Customer Support.
You need to sign in to do that
Sign in to start searching questions
Signup for a Developer Edition
Sign in to start a discussion
pageblocktableで折りたたんだ状態で表示するには
どの属性を操作すればできますでしょうか?
それとも、デフォルト展開された状態でしか表示はできないでしょうか?
ご教授いただきたく。
pageBlockSectionを折りたたみされた状態で表示するサンプルソースがありました。
次のscriptで折りたたまれると思います。
<script> function defaultCollapseAll() { this.previousHandler = window.onload; this.execute = function() { if(this.previousHandler!=null) this.previousHandler(); var imgs = window.top.document.getElementsByTagName('img'); for(var x in imgs) if(imgs[x].className=='hideListButton') { twistSection(imgs[x]); } } } window.onload = new defaultCollapseAll().execute; </script>
US版のForce.com Discussion Boardsでみつけました。
collapsible="true"の状態で動作するみたいです。
一応これで折りたたまれることは確認できたのですが、もしかすると想定外の挙動とかがあるかもしれません。
Collapse pageblocksections using javascript
http://boards.developerforce.com/t5/forums/forumtopicprintpage/board-id/Visualforce/message-id/30315/print-single-message/false/page/1
javascript で対応する方法があります。
.style.display = "none"; を使ってヘッダー部のみの状態で表示できることを確認できました。
以下サンプルソースです。
Page
<apex:page Controller="PageBlockTableHideController" id="pageId"> <apex:form id="formId"> <apex:pageBlock id="blockId"> <apex:pageBlockTable value="{!objAccounts}" var="item" id="tableId"> <apex:column headerValue="{!$ObjectType.Account.Fields.Name.Label}"> <apex:outputField value="{!item.Name}"/> </apex:column> <apex:column headerValue="{!$ObjectType.Account.Fields.AccountNumber.Label}"> <apex:outputField value="{!item.AccountNumber}"/> </apex:column> <apex:column headerValue="{!$ObjectType.Account.Fields.Site.Label}"> <apex:outputField value="{!item.Site}"/> </apex:column> <apex:column headerValue="{!$ObjectType.Account.Fields.Industry.Label}"> <apex:outputField value="{!item.Industry}"/> </apex:column> </apex:pageBlockTable> </apex:pageBlock> </apex:form> <script> var element = document.getElementById('pageId:formId:blockId:tableId:tb'); element.style.display = "none"; </script> </apex:page>
Controller
public with sharing class PageBlockTableHideController { public List<Account> objAccounts {get; set;} public PageBlockTableHideController() { this.objAccounts = [select Id, Name, AccountNumber, Site, Industry from Account limit 20]; } }
補足ですが、List件数が0件の場合はheaderValueでラベル名を指定しておけばjavascriptが無くてもヘッダー部のみが表示されます。
もう少し調べてみました。
先程のサンプルへの追加処理です。
pageBlockTableにonClickイベントを追加してテーブルクリックで表示の切り替えを行うことができます。
<apex:pageBlockTable value="{!objAccounts}" var="item" id="tableId" onClick="tableClick();">
script 側の処理は次のようになります。
function tableClick() { if (element.style.display == "none") { element.style.display = ""; } else { element.style.display = "none"; } return false; }
taikiさん、いつもご丁寧にご回答ありがとうございます。
pageBlockSection~pageBlockSectionItemの組合せの時も
同じような実装で可能でしょうか?
</apex:pageBlockSection>
<apex:pageBlockSectionItem >AAA/apex:pageBlockSectionItem> <apex:pageBlockSectionItem >BBB</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >CCC</apex:pageBlockSectionItem></apex:pageBlockSection>
pageBlockSectionで折りたたみされた状態で表示という事でしょうか。
Javascriptで対応できるとは思うのですが、ちょっと難しいかもしれません。
ちなみに折りたたみの切り替えでしたら"collapsible"で折りたたみが可能になります。
<apex:pageBlockSection columns="2" collapsible="true">
Taikiさん
はい、その通りです。
「pageBlockSectionで折りたたみされた状態で表示」ということです。
デフォルトでは展開された状態で表示されるので、
折りたたんだ状態で表示したいという事でした。
無事、思い通りに実装できました。
本当に助かりました。
ありがとうございました。
apexタグの属性等で対応できないような場合は
教えて頂いた例のようにJavaScriptなどでコントロールする方法を取るのですね。
とても勉強になります。
無事に解決したみたいで良かったです。
私もいろいろ調べてみて勉強になりました。
pageBlockSectionの方はできないかなと思ってたんですけど、やり方が見つかって良かったです。
Javascriptで対応するときの注意点なんですけど、onLoadイベントとかで処理を行った際に
Salseforceの標準のJavascriptに影響がでて思わぬ挙動がでるケースがあるみたいです。
Javascriptで対応するときはその辺りも注意した方がいいかもしれないです。
あと回答になった投稿に解決のマークをつけてもらえると解決した感じがでるので、
個人的に嬉しいです。(^^)
Taikiさん
ご教授ありがとうございます。
解決マークの件、そのようなお作法を知らず申し訳ありません。
過去の投稿に関しても解決マークを付けました。
今後とも宜しくお願い致します。
ありがとうございます。
気が向いたら程度のものだと思いますけど、あとで見直すときに便利かな思ってます。(^^)
pageBlockSectionを折りたたみされた状態で表示するサンプルソースがありました。
次のscriptで折りたたまれると思います。
US版のForce.com Discussion Boardsでみつけました。
collapsible="true"の状態で動作するみたいです。
一応これで折りたたまれることは確認できたのですが、もしかすると想定外の挙動とかがあるかもしれません。
Collapse pageblocksections using javascript
http://boards.developerforce.com/t5/forums/forumtopicprintpage/board-id/Visualforce/message-id/30315/print-single-message/false/page/1
All Answers
javascript で対応する方法があります。
.style.display = "none"; を使ってヘッダー部のみの状態で表示できることを確認できました。
以下サンプルソースです。
Page
Controller
補足ですが、List件数が0件の場合はheaderValueでラベル名を指定しておけばjavascriptが無くてもヘッダー部のみが表示されます。
もう少し調べてみました。
先程のサンプルへの追加処理です。
pageBlockTableにonClickイベントを追加してテーブルクリックで表示の切り替えを行うことができます。
script 側の処理は次のようになります。
taikiさん、いつもご丁寧にご回答ありがとうございます。
pageBlockSection~pageBlockSectionItemの組合せの時も
同じような実装で可能でしょうか?
</apex:pageBlockSection>
<apex:pageBlockSectionItem >AAA/apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >BBB</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >CCC</apex:pageBlockSectionItem>
</apex:pageBlockSection>
pageBlockSectionで折りたたみされた状態で表示という事でしょうか。
Javascriptで対応できるとは思うのですが、ちょっと難しいかもしれません。
ちなみに折りたたみの切り替えでしたら"collapsible"で折りたたみが可能になります。
Taikiさん
はい、その通りです。
「pageBlockSectionで折りたたみされた状態で表示」ということです。
デフォルトでは展開された状態で表示されるので、
折りたたんだ状態で表示したいという事でした。
pageBlockSectionを折りたたみされた状態で表示するサンプルソースがありました。
次のscriptで折りたたまれると思います。
US版のForce.com Discussion Boardsでみつけました。
collapsible="true"の状態で動作するみたいです。
一応これで折りたたまれることは確認できたのですが、もしかすると想定外の挙動とかがあるかもしれません。
Collapse pageblocksections using javascript
http://boards.developerforce.com/t5/forums/forumtopicprintpage/board-id/Visualforce/message-id/30315/print-single-message/false/page/1
Taikiさん
無事、思い通りに実装できました。
本当に助かりました。
ありがとうございました。
apexタグの属性等で対応できないような場合は
教えて頂いた例のようにJavaScriptなどでコントロールする方法を取るのですね。
とても勉強になります。
無事に解決したみたいで良かったです。
私もいろいろ調べてみて勉強になりました。
pageBlockSectionの方はできないかなと思ってたんですけど、やり方が見つかって良かったです。
Javascriptで対応するときの注意点なんですけど、onLoadイベントとかで処理を行った際に
Salseforceの標準のJavascriptに影響がでて思わぬ挙動がでるケースがあるみたいです。
Javascriptで対応するときはその辺りも注意した方がいいかもしれないです。
あと回答になった投稿に解決のマークをつけてもらえると解決した感じがでるので、
個人的に嬉しいです。(^^)
Taikiさん
ご教授ありがとうございます。
解決マークの件、そのようなお作法を知らず申し訳ありません。
過去の投稿に関しても解決マークを付けました。
今後とも宜しくお願い致します。
ありがとうございます。
気が向いたら程度のものだと思いますけど、あとで見直すときに便利かな思ってます。(^^)