Salesforce apex控制器扩展,用于自定义对象和visualforce页面

时间:2013-07-25 07:05:21

标签: salesforce soql

我创建了2个自定义对象,由于salesforce列表和报告的限制,我不能在长文本区域显示超过255个字符。

Sales_Trip__c
- Name - string
- Date_From - date
- Date_To - date
- Salesman - lookup User


Sales_Trip_Visit__c
- Sales_Trip - master-detail
- Account - master-detail
- Notes - Long Textarea
- Date - date

所以我正在尝试创建一个新的visualforce页面,该页面在Sales_Trip_Visit__c.Date排序的表格中显示sales_trip_visit__c

我使用Sales_Trip__c标准控制器工作 但这会使无序访问返回。

据我所知,我无法在页面内执行此操作,因此我尝试为Sales_Trip__c标准控制器创建一个扩展,该控制器的方法返回按日期排序的访问列表。

这是我到目前为止所做的事情,我认为我做得不对。

public class mySalesTripControllerExtension {

private final Sales_Trip__c satr;

public mySalesTripControllerExtension(ApexPages.StandardController stdController) {
    this.satr = (Sales_Trip__c)stdController.getRecord();
}

public List<Sales_Trip_Visits__c> getVisitList() {
    con = new List<Sales_Trip_Visits__c>();
    con = [SELECT Date, Account.Name, Notes FROM Sales_Trip_Visits__c WHERE Sales_Trip__c.id = :this.satr.id ORDER BY Date]
    return con;
}
}

我收到以下错误,但我认为我完全错了。

    Error: Compile Error: sObject type 'Sales_Trip_Visits__c' is not supported. If you are attempting to use a custom object, be sure to append the '__c' after the entity name. Please reference your WSDL or the describe call for the appropriate names. at line 18 column 15

感谢您的帮助,现在我修改了代码。并且我保留了我正在使用的名称约定,这是一个重复的自定义对象相同的字段/相同的关系只是一个不同的名称(原始有一个丰富的textarea。_2有一个长textarea

public class mySalesTripControllerExtension {

    private final Sales_Trip__c satr;

    // The extension constructor initializes the private member
    // variable acct by using the getRecord method from the standard
    // controller.
    public mySalesTripControllerExtension(ApexPages.StandardController stdController) {
        this.satr = (Sales_Trip__c)stdController.getRecord();
    }

    public List<Sales_Trip_Visit_2__c> getVisitList() {
        Sales_Trip_Visit_2__c con = [SELECT Date__c, Account__r.Name, Notes__c FROM Sales_Trip_Visit_2__c WHERE  Sales_Trip__r.Id = :satr.id ORDER BY Date__c];
        return con;
    }
}

当前错误。

Error: Compile Error: Return value must be of type: LIST<Sales_Trip_Visit_2__c> at line 16 column 9 

1 个答案:

答案 0 :(得分:0)

首先,您可以在页面上进行排序,但是您必须使用一些javascript。一个更好的方法就是你在控制器端进行排序。 除了我在评论中提到的错误之外,你整体做得对。 这是修改后的代码

public List<Sales_Trip_Visits__c> getVisitList() {
   Sales_Trip_Visits__c con = [SELECT Date__c, Account__r.Name, Notes__c FROM Sales_Trip_Visits__c WHERE  Id = :satr.id ORDER BY Date__c]
   return con;
}