質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Visualforce

Visualforceは、Force.comプラットフォームの機能の一つ。Salesforceのアプリケーションにネイティブにホストできるカスタムユーザインターフェースの作成が可能になります。

Apex

Apexは、Salesforce上で動作するアプリケーション作成をサポートするアプリケーション開発プラットフォーム。プログラミング言語であるApexコードと、独自のApex WebサービスAPIなどで構成されています。

Q&A

1回答

8842閲覧

リストビューのカスタムボタンからVisualforceページを呼び出し、処理が終了したら元の画面に自動で戻るようにしたい

yuzuha

総合スコア0

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Visualforce

Visualforceは、Force.comプラットフォームの機能の一つ。Salesforceのアプリケーションにネイティブにホストできるカスタムユーザインターフェースの作成が可能になります。

Apex

Apexは、Salesforce上で動作するアプリケーション作成をサポートするアプリケーション開発プラットフォーム。プログラミング言語であるApexコードと、独自のApex WebサービスAPIなどで構成されています。

0グッド

0クリップ

投稿2020/09/23 14:17

前提

Salesforceのカスタムボタンを使ってCSV出力を行いたいの回答を参考にし、リストビューでチェックしたレコードをCSV出力するボタンを作成しました。
イメージ説明

やりたいこと・現在の状態

CSVを出力したあと、元の画面(リストビュー)へ自動遷移するようにしたいです。
現在は、CSV出力後も空白ページのままになってしまいます。
イメージ説明

ソースコード

  • カスタムボタンから呼び出されるVisualforceページ

TestObjCsvButtonPage1

1<apex:page standardController="TestObject__c" recordSetVar="TestObjs" extensions="TestObjCsvController" action="{!execute}"> 2</apex:page>
  • カスタムコントローラー

TestObjCsvController

1public class TestObjCsvController { 2 3 public List<String> csvList {get; set;} 4 ApexPages.StandardSetController controller {get; set;} 5 6 public TestObjCsvController(ApexPages.StandardSetController controller) { 7 this.controller = controller; 8 } 9 10 public PageReference execute(){ 11 List<TestObject__c> TestObjIdList = (List<TestObject__c>)controller.getSelected(); 12 13 csvList = new List<String>(); 14 15 for(TestObject__c a : [SELECT Name, TestField__c FROM TestObject__c Where Id IN : TestObjIdList]){ 16 String line = a.name + ',' + a.TestField__c + '\n'; 17 csvList.add(line); 18 } 19 20 return Page.TestObjCsvButtonPage2; 21 } 22 23}
  • CSVを出力するVisualforceページ

TestObjCsvButtonPage2

1<apex:page standardController="TestObject__c" recordSetVar="TestObjs" extensions="TestObjCsvController" contentType="text/csv;charset=Shift-JIS;#test.csv"> 2 <apex:repeat value="{!csvList}" var="row"> 3 <apex:outputText value="{!row}"/> 4 </apex:repeat> 5</apex:page>

試したこと・調べたこと

  • CSVを出力しているVisualforceページ(TestObjCsvButtonPage2.vfp)に history.back()を追加してみましたが、元の画面に遷移しませんでした。

TestObjCsvButtonPage2

1<apex:page standardController="TestObject__c" recordSetVar="TestObjs" extensions="TestObjCsvController" contentType="text/csv;charset=Shift-JIS;#test.csv"> 2 <apex:repeat value="{!csvList}" var="row"> 3 <apex:outputText value="{!row}"/> 4 </apex:repeat> 5 <script type="text/javascript"> 6 history.back() 7 </script> 8</apex:page>

動作環境

  • Salesforce Summer '20
  • Developer Edition
  • Lightning Experience

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

JavaScriptのlocation.href

そのままの意味ですよ

Page

1 <script type="text/javascript"> 2 // history.back() 3 location.href = '元のURL'; 4 </script>

です。

でも本来は
【jQuery】テーブルデータを取得しCSV出力する方法
の方をオススメします。
(余計なクラスやページを準備しなくて良い。文字エンコードなどにも対応しやすい等)

投稿2020/09/23 15:56

編集2020/09/23 16:00
kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuzuha

2020/09/24 06:48 編集

ご回答ありがとうございます。 location.hrefをVisualforceページ(TestObjCsvButtonPage2.vfp)に組み込んでみたのですが、 残念ながらlocation.hrefで指定したURLに遷移しませんでした。 (カスタムコントローラーのexecuteメソッドで使用している、「PageReference」を使う場合は必ず遷移先のページが表示され続ける挙動になってしまうのでしょうか…?)
kuma_kuma_

2020/09/25 16:14

やっぱり... その空ページ自体がCSV自体ではないんですよ (CSVだったら、その内容が表示されるでしょ?) ブラウザが認識していない形式のURLを送ると「ダウンロードしますか?」と聞かれてCSVはダウンロードします。でもタブのURLで指定されているから表示は?となって空ページとなるんです。 ボタンかリンクを押した際、前に紹介したようにJSでダウンロードの処理をして下さい。 そうすれば回避できます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問