4

PageReference を返して sObject を編集および表示する方法を知っています。

PageReference ref =  new ApexPages.StandardController(bnk).edit();

しかし、StandardController クラスには create のようなメソッドはありません。

ページに戻って sObject を作成するにはどうすればよいですか。

私は次のような方法も知っています:

PageReference ref =  new PageReference('/a00/e');

しかし、sObject には多くの参照項目があります。このメソッドは、参照参照項目を取り出すことはできません。スタンドアロンの sObject のみを作成できます。

では、作成ページに戻り、参照ルックアップ フィールドを取り出すにはどうすればよいでしょうか。

4

2 に答える 2

5

以下の私の回答でルックアップフィールドを設定する方法を尋ねていると思います。ただし、ルックアップ フィールドを削除する方法を尋ねている場合は、PageLayout を編集する必要がありますが、編集ページからもフィールドが削除されます。編集ページには項目が必要で、作成ページには項目が必要ない場合は、オブジェクト用に新しい Visualforce の作成ページを作成し、そのページへのリダイレクトを設定する必要があります。


作成ページは、idパラメーターのない編集ページです。あなたが持っているコードはうまくいくはずです:

PageReference ref =  new PageReference('/a00/e');

を介して新しいページに送信されるパラメータを変更するPageReferenceには、 メソッドを使用しgetParameters()ます。以下の例では、アカウント ルックアップのパラメーターを入力します (CF00NC0000004htI5開発版のフィールド ID です)。

PageReference.getParameters().put('CF00NC0000004htI5', 'sForce');

フィールド ID は、[設定] > [作成] > [オブジェクト] > [オブジェクト] > [フィールド] に移動して見つけることができます。そこに移動したら、ページ アドレス (URL) で フィールド ID を探します/(ただし、 がある?場合は の前?)。たとえば、私のフィールド URL は次のとおりhttps://instance.salesforce.com/00NC0000004htI5?setupid=CustomObjectsです。ID を取得したら、そのCF前に追加します。

ルックアップ フィールドの場合は、CF+FieldId+_lktpパラメータも設定できます。これにより、参照されるレコードの Id が設定されます。

次のページを取得するために使用している完全な方法を次に示します。

public PageReference NextPage()
{
    Account a = [Select Id, Name From Account Where Name like '%sForce%' Limit 1];

    PageReference myPage = new PageReference('/a03/e');

    // set the ID on a lookup field
    myPage.getParameters().put('CF00NC0000004htI5_lktp', a.Id); 
    // set the Name on a lookup field
    myPage.getParameters().put('CF00NC0000004htI5', a.Name);

    myPage.setRedirect(true);
    return myPage;
}
于 2012-04-24T13:28:21.783 に答える
5

[保存して新規作成] ボタンを追加しようとしたときに、同じ問題が発生しました。StandardController に PageReference を返す new() メソッドがないのは奇妙に思えます。

Apex クラスを別の Salesforce 組織にデプロイする場合 (たとえば、送信変更セットに追加する、管理パッケージまたは未管理パッケージに入れる、または Eclipse を使用してデプロイする)、カスタム オブジェクトのキー プレフィックスをハード コーディングすることは避けたいと思います。これは変更される可能性があるためです。組織間。代わりに、DescribeSObjectResult を使用して KeyPrefix を取得します。

public PageReference customObjectPageReference() {
    Schema.DescribeSObjectResult R = YourCustomObject__c.SObjectType.getDescribe();
    // Add /o to end of URL to view recent
    return new PageReference('/' + R.getKeyPrefix() + '/e');
}
于 2012-05-29T21:13:52.423 に答える