java - 通过 Apex 和 Visualforce(Salesforce Web)过滤报告

标签 java html salesforce visualforce apex

我正在尝试打印 Salesforce 自定义对象数据库并有一个过滤器。过滤器工作正常,但默认情况下或当我从另一个过滤器中单击“全部”时,“全部”过滤器不会显示完整表格。我怎样才能做到这一点?

以下是相关的 Apex 代码:

public string itemPickValue{get; set;}
    public List<QC_Issue__c> issuesList{get; set;}
    public List<QC_Issue__c> results; 

    public List<QC_Issue__c> getIssues() {
        results = Database.query(
            'SELECT Component_Category__c, Issue_Name__c, Issue_Description__c, Severity_1_Criteria__c, Severity_2_Criteria__c, Severity_3_Criteria__c, File__c FROM QC_Issue__c Order By Component_Category__c, Issue_Name__c'

        );

        return results; 
    }

    public void getIssuesList() {
        if(itemPickValue.equals('All')) issuesList = Database.query('SELECT Component_Category__c, Issue_Name__c, Issue_Description__c, Severity_1_Criteria__c, Severity_2_Criteria__c, Severity_3_Criteria__c, File__c FROM QC_Issue__c');
        issuesList = Database.query('SELECT Component_Category__c, Issue_Name__c, Issue_Description__c, Severity_1_Criteria__c, Severity_2_Criteria__c, Severity_3_Criteria__c, File__c FROM QC_Issue__c WHERE Component_Category__c =: itemPickValue');
    }

这是相关的 Visualforce 代码:

<apex:pageBlock title="QC Glossary" id="qc_issues_list">
                <h3>Filter by Component Category:</h3>
                <br></br>
                <!-->Start Filter and List<-->
                    <apex:selectList size="1" value="{!itemPickValue}">
                        <apex:actionSupport event="onchange" action="{!getIssuesList}" rerender="table"/>
                            <apex:selectOption itemLabel="All" itemValue="All"></apex:selectOption>
                            <apex:selectOption itemLabel="Animation/VFX" itemValue="Animation/VFX"></apex:selectOption>
                    </apex:selectList>
                    <br></br>
                    <br></br>

                    <apex:pageBlockTable id="table" value="{!issuesList}" var="qc" columnsWidth="10%, 5%, 50%, 10%, 10%, 10%, 10%">
                        <apex:column value="{!qc.Component_Category__c }"/>
                        <apex:column value="{!qc.Issue_Name__c }"/>
                        <apex:column value="{!qc.Issue_Description__c}"/>
                        <apex:column value="{!qc.Severity_1_Criteria__c}"/>
                        <apex:column value="{!qc.Severity_2_Criteria__c}"/>
                        <apex:column value="{!qc.Severity_3_Criteria__c}"/>
                        <apex:column value="{!qc.File__c}"/>
                    </apex:pageBlockTable>

最佳答案

我做了以下更改

  • 使用 getIssues 方法消除了代码重复,而不是复制 SOQL 语句。
  • 添加了 if/else 子句;您的主要问题是在 getIssuesList 中,您有一个 if 语句,如果 true 会将完整结果存储在 issuesList 中,然后立即在下一行中使用过滤列表尝试覆盖它使用类别名称“全部”

这里还有其他一些事情需要指出;但我暂时先不谈这个。

结果:

public String itemPickValue{get; set;}
public List<QC_Issue__c> issuesList{get; set;}
public List<QC_Issue__c> results; 

public List<QC_Issue__c> getIssues() {
    results = Database.query(
        'SELECT Component_Category__c, Issue_Name__c, Issue_Description__c, Severity_1_Criteria__c, Severity_2_Criteria__c, Severity_3_Criteria__c, File__c FROM QC_Issue__c Order By Component_Category__c, Issue_Name__c'
    );

    return results; 
}

public void getIssuesList() {
    if(itemPickValue.equals('All')) {
        issuesList = getIssues();
    } else {
        issuesList = Database.query('SELECT Component_Category__c, Issue_Name__c, Issue_Description__c, Severity_1_Criteria__c, Severity_2_Criteria__c, Severity_3_Criteria__c, File__c FROM QC_Issue__c WHERE Component_Category__c =: itemPickValue');
    }
}

关于java - 通过 Apex 和 Visualforce(Salesforce Web)过滤报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757248/

相关文章:

salesforce - Visualforce 自定义 Controller 列表

Java HttpURLConnection - 枚举所有 302 重定向跃点

java - 如何显示与屏幕成比例的图像

java - Java 中的静态导入 Long.parseLong

java - 获取 Velocity 中的变量

javascript - HTML 未分别填充多个容器的问题

javascript - 如何随机化 HTML 元素的颜色属性?

javascript - 如何在将顶部保持在同一位置的同时缩放 div

salesforce 从 sObject 转换为自定义对象

javascript - AJAX 工具包 -- webservice 执行的问题