Frage

Ich erhalte einen ‚Konvertierungsfehler Einstellungswert‘, wenn ich versuche, einen Datensatz in meiner Controller-Erweiterung zu speichern. Die Seite sieht so, wie ich erwarten würde, aber wenn ich ein oder mehr Kontrollkästchen wählen, es gibt meinen, dass Fehler. Ich sehe nicht, was der Fehler ist hier. Danke für die Hilfe.

Die Seite:

          <apex:pageBlockSectionItem >
                <apex:OutputLabel value="Assigned Areas of Coverage" for="books" />
                <apex:selectCheckboxes value="{!selectedBooks}"
                    layout="pageDirection" id="books">
                    <apex:selectOptions value="{!options}" />
                </apex:selectCheckboxes>
            </apex:pageBlockSectionItem>

Der Controller:

public String[] selectedBooks {get; set;}

public List<SelectOption> options 
{
    get
    {
        List<SelectOption> result = new List<SelectOption>();
        List<String> optionNames = bookNames(books);
        optionNames.sort();

        for(String n : optionNames){
            if(!blacklist.contains(n)){
                result.add(new SelectOption(n, n));
            }
        }

        return result;
    }
}

private List<Book__c> books 
{
    get 
    { if (books == null){
        books =   [select Id, Name from Book__c];
        }
        return books;

    }
    set;    
}

private List<String> bookNames(List<Coverage__c> coverage)
{
    List<String> result = new List<String>();

    for(Coverage__c c : coverage){
        result.add(c.Book__r.Name);
    }

    return result;
}

private List<String> bookNames(List<Book__c> books)
{
    List<String> result = new List<String>();

    for(Book__c b : books){
        result.add(b.Name);
    }

    return result;
}

private List<Id> bookIDs(List<String> bookNames)
{
    List<Id> result = new List<Id>();
    Set<String> bookNamesSet = new Set<String>(bookNames);

    for(Book__c b : books){
        if(bookNamesSet.contains(b.Name)){
            result.add(b.Id);
        }
    }

    return result;
} 
War es hilfreich?

Lösung

Ich glaube, Sie müssen mehr Code schreiben und es ist nicht klar, was genau Sie erreichen wollen:

  • Was ist Ihre eigentliche „Befehl“ -Funktion, ich sehe keinen und nicht eine einzige Funktion aus dem Controller sieht aus wie „public void Spaß ()“oder "public PageReference Spaß ()" -. ich meine vor allem den Teil über keine Eingabeargumente unter

  • Ihr Code kompiliert nicht, habe ich Book__c mit Konto und Coverage mit Kontakt ersetzt, sondern zum Beispiel der „schwarze Liste“ Variable in

    if (! Blacklist.contains (n)) {

ist nicht definiert. Ich kann davon ausgehen, dass dies ist das gleiche wie „Ergebnis“, aber man weiß ja ... garbage in, garbage out. Wir könnten müssen nur den Teil, den Sie ausgelassen haben;) Auch - können Sie das Problem mit Standard Salesforce replizieren Objekte, so dass es für uns einfacher Test ist

  • "selectedBooks" in der Seite zu lesen, aber sie nie Sollwert? Nicht einmal auf die einfachsten selectedBooks = new String [] ... Die nicht initialisierten Variablen a Lösung auf ähnliches Problem auf Salesforce Message Board diskutiert .

  • Nur ein zufälliger Gedanke - für bookIDs () Funktion, die Sie vielleicht besser mit Map oder Karte . Die erste kann auch direkt von [SELECT ID, Name FROM Buch] instanziiert werden, wenn Sie es brauchen. Sie wollen von IDs einstellen - danach die keySet () -Methode verwenden. Sie möchten eine Liste der Bücher - die Werte verwenden ()

  • .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top