SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




2 Listen in einer Funktion aufrufen - Javascript

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
354 Beiträge
ExpoIT erstellt 26 Juni 2017 07:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo, habe mal wieder ein Problem, welches mir schlaflose Nächte bereitet...

Also ich lade Liste 1 mit Spalte A, B und C und ich lade Liste 2 mit Spalte Title. Nun habe ich eine Funktion, welches eine neue Aufgabe in die Task-Liste eintragen soll und so aussehen  soll:

Spalte 1 Spalte 2 Spalte 3 Spalte 4
Title A B C

Meine Funktion sieht so aus:

function createNewTask(title)

{

var context = SP.ClientContext.get_current();

//Tasks

var tasks = context.get_web().get_lists().getByTitle('Tasks');

var info = new SP.ListItemCreationInformation();

var listItem = tasks.addItem(info);

listItem.set_item("Title", title);

listItem.update();

context.load(listItem);

context.executeQueryAsync(onNewTask,function () {

alert('Error fetching data from Sharepoint!');

});

}

Diese Funktion rufe ich nach dem Laden der Liste 2 auf und dann wird der Title eingetragen, wie kann ich das machen, dass ich ein Gesamtergebnis habe? Müsste doch möglich sein? Irgendwo ist eine Denklücke glaube ich. Ich hoffe die Problematik verständlich erklärt zu haben.
Danke schon mal 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Juni 2017 08:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe das Problem ehrlich gesagt nicht verstanden. Dein geposteter Code müßte eigentlich anstandslos funktionieren.

Kann es sein, daß Du Probleme hast, an die Ergebnisse früherer Anfragen zu kommen? Dann gibt es grundsätzlich mindestens drei Lösungsmöglichkeiten:

1. Speichern in globalen Variablen (böse!). Führe ich nicht näher aus...

2. Erweitere die Funktion createNewTask um weitere Parameter zusätzlich zum Title. Nicht schön, funktioniert aber. Oder übergib statt den Einzelwerten als diskrete Parameter ein Objekt mit entsprechenden Properties. Besser, aber man muß sich auf ein Datenformat einigen.

3. Verwende geschachtelte anonyme Methoden. Machte den Code schwer lesbar.

var myValue = something;
ctx.executeQueryAsync(function() {
// success - hier kannst Du problemlos auf myValue zugreifen
}, function() {
// failure
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
354 Beiträge
ExpoIT Als Antwort am 26 Juni 2017 09:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ja, ich habe so meine Schwierigkeiten mich deutlich auszudrücken, sorry. Ich versuchs nochmal:

Ich habe eine Liste 1 mit einer Spalte Title. Meine Liste 2 hat einige Spalten mit Informationen, wo ich aber nur die Inhalte von 2 Spalten brauche. 

Also: Inhalt von Liste 1 mit der Spalte Title und inhalte von Liste 2 mit den Spalten Anfangsdatum und Dauer müssen in Liste 3 zusammengetragen werden.

Liste 3 sieht dann soo aus:

Title Dauer Anfangsdatum
Mitglieder einweisen 5 01.08.2017
Kurs durchführen 6 25.9.2017
Abschlussfeier 1 10.10.2017

Spalte Title sind Inhalte aus Liste 1 und die Spalten Dauer und Anfangsdatum aus Liste 2.

Mein Code funktioniert auch, allerdings für jede Liste einzeln, das sieht dann so aus:

Title Dauer Anfangsdatum
Mitglieder einweisen
No Title 5 01.08.2017
Kurs durchführen
No Title 6 25.9.2017
Abschlussfeier
No Title 1 10.10.2017

Lade Liste1(){

.....

createNewTask(fieldValue);

}

LadeListe2(){

......

createNewTask2(value, fieldValue);

}

??

Viele Grüße AS

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Juni 2017 13:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK, also um bei Deinem Besipiel zu bleiben, würde ich das so machen:

ladeAllesVonListe1();
ladeAllesVonListe2();
ctx.executeQueryAsync(...
createNewTask und verwende dabei alle Daten von Liste1 und Liste2
);

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
354 Beiträge
ExpoIT Als Antwort am 27 Juni 2017 14:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi, 

ja aber ich muss doch Werte übergeben an createNewTask?

von Liste 1 sind es immer 2 Werte und von Liste 2 ist es 1 Wert.

Bin ich gerade völlig falsch mit meiner Überlegung?

"verwende dabei alle Daten von Liste1 und Liste2" ?????

Bin mal wieder etwas *plämpläm*

Viele Grüße AS

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 27 Juni 2017 15:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und ich weiß leider nicht, wie ich das besser erklären könnte...

An der Stelle, wo ich den entsprechenden Kommentar geschrieben habe, kannst Du auf alle bisher in dieser Funktion verwendeten Variablen zugreifen und sie an createNewTask übergeben. Entweder als diskrete Einzelwerte oder als Objekt.

Viele Grüße
Andi
af @ evocom de
Blog