SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

2 Listen in einer Funktion aufrufen - Javascript

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 5 Antworten | 1 Follower

Top-50-Beitragsschreiber
Weiblich
300 Beiträge
ExpoIT erstellt in 26 Jun 2017 7:36

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 

Viele Grüße AS

Alle Antworten

Top-10-Beitragsschreiber
Männlich
18.326 Beiträge

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
Top-50-Beitragsschreiber
Weiblich
300 Beiträge

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

Top-10-Beitragsschreiber
Männlich
18.326 Beiträge

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
Top-50-Beitragsschreiber
Weiblich
300 Beiträge

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

Top-10-Beitragsschreiber
Männlich
18.326 Beiträge

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
Seite 1 von 1 (6 Elemente) | RSS