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.




List Item Update via JavaScript

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
2 Beiträge
Sensei erstellt 28 Sept. 2011 15:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe eine Webpart-Seite und eine Liste in SharePoint 2010. Nun möchte ich, dass ein Eintrag in der Liste vorgenommen wird - und zwar immer, wenn ein Benutzer die Seite aufruft. Dies soll zwingend mit JavaScript umgesetzt werden.

Nachdem ich nun drei Tage damit verbracht habe, Lösungen via google zu suchen und erfolglos umzusetzen, meine Frage ob mir hier jemand helfen kann?!

Nachfolgend mein Skript (was bisher leider nicht funktioniert):

<script type="text/javascript">

var siteUrl = '/Meeting/Lists/';
ExecuteOrDelayUntilScriptLoaded("sp.js");
_spBodyOnLoadFunctionNames.push("updateListItem");

function updateListItem() {

    var clientContext = new SP.ClientContext(siteUrl);

    var oList = clientContext.get_web().get_lists().getByTitle('Testliste');

    this.oListItem = oList.getItemById(1);

    this.oListItem.set_item('test', 'new content');

    this.oListItem.update();

}

</script>

 

Ich habe gelesen, man muss sp.js einbinden, ist das korrekt?

Wie gebe ich die siteURL im clientContext an (ist auch ein absoluter Pfad möglich)?

Die Spalte in der Liste heißt 'test' und soll mit einem Eintrag geupdated werden.

Ich habe das Skript über ein Webpart vom Typ 'Inhalts-Editor' und 'HTML-Formular' eingebunden, beides erfolglos.

 

Vielen Dank für eure Hilfe!

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 28 Sept. 2011 16:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Den ClientContext mußt Du mit einem absoluten Pfad (http://server/site) initialisieren.

Aber das wichtigste ist, daß Du alle Elemente, die Du brauchst über ein clientContext.Load(myObject) laden mußt. Und auch das greift erst nach einem clientContext.executeQueryAsync(...)

Damit solltest Du erstmal genug Material für weitere Recherchen haben...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
2 Beiträge
Sensei Als Antwort am 29 Sept. 2011 09:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

vielen Dank für deine schnelle Antwort. Aber leider funktioniert dies ebenfalls nicht. Anbei nochmal mein geändertes Skript:

 

<script type="text/javascript">

var siteUrl = 'http://server/subsite1/subsite2/Meeting/Lists/Testliste/';


ExecuteOrDelayUntilScriptLoaded("sp.js");
_spBodyOnLoadFunctionNames.push("updateListItem");

function updateListItem() {

    var clientContext = new SP.ClientContext(siteUrl);

    var oList = clientContext.get_web().get_lists().getByTitle('Testliste');

    this.oListItem = oList.getItemById(1);

    oListItem.set_item('test', 'new content');

    oListItem.update();

    clientContext.load(oListItem);
 
    clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);

}

function onQuerySucceeded() {

    alert('Item created: ');
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

</script>

Die komplette Pfadangabe zu der Liste ist: http://server/subsite1/subsite2/Meeting/Lists/Testliste/AllItems.aspx (welche ich auch so schon versucht hatte).

Die Spalten meiner Liste heißen: Titel, Datum, ID, test.

Darin befindet sich ein einziger Eintrag mit folgendem Inhalt: Monat, 20.09.2011 11:36, 1, null.

Ist es ausreichend, das Skript über eine HTML-Formular bzw. Inhalts-Editor Webpart einzufügen?

 

Vielen Dank!

 

 

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 Sept. 2011 10:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du solltest Dich zuerst mit irgendeinem Tool vertraut machen, mit dem man JavaScript debuggen kann. Nur dann siehst Du, was da wirklich abgeht. Man kann daazu Visual Studio verwenden oder die Entwicklertools, die im IE eingebaut sind. Für Firefox gibt es entsprechende Plugins.

Den ClientContext mußt Du mit der URL einer Website initialisieren. Derzeit hast Du da die URL einer Liste.

Dann mußt Du das gewünschte ListItem zuerst laden, gefolgt von executeQueryAsync. Erst dann kannst Du das ListItem ändern, wieder gefolgt von einem load und executeQueryAsync.

[quote user="Sensei"]Ist es ausreichend, das Skript über eine HTML-Formular bzw. Inhalts-Editor Webpart einzufügen?[/quote]

Ja, solange das Script dann unverändert im Quelltext der Seite erscheint. Also beim Inhalts-Editor in der Quelltextansicht einfügen.

Viele Grüße
Andi
af @ evocom de
Blog