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.




Button für Teilvorgang erstellen

Geprüfte Antwort Dieser Beitrag hat 33 Antworten

Ohne Rang
49 Beiträge
Mel89 erstellt 14 Jan. 2015 11:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen

Ich möchte auf dem DispForm.aspx einer Aufgabe einen Button erstellen, der mir unter dieser Aufgabe einen Subtask generiert. Folgender Code funktioniert wunderbar:

<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script><script type="text/javascript">

function newSubTask(){

                var clientContext = new SP.ClientContext.get_current();
               
                var oList = clientContext.get_web().get_lists().getByTitle('Briefings');
                                            
                var itemCreationInfo = new SP.ListItemCreationInformation();
               
                this.oListItem = oList.addItem(itemCreationInfo);

                oListItem.set_item('Title', 'Test');
               
                oListItem.set_item('ParentID', '5');

                oListItem.update();

                clientContext.load(oListItem);

        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this,


this.onQueryFailed));

}

function onQuerySucceeded() {

    alert('Item created: ' + oListItem.get_id());

}

function onQueryFailed(sender, args) {

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

}

</script><input id="Button1" onclick="newSubTask()" type="button" value="Teilaufgabe erstellen"/>

 

Nun möchte ich aber, dass es mir die ID des aktuellen Elements immer gleich übernimmt (s. gelbe Markierung im code), je nachdem auf welchem Element ich mich befinde. Ich möchte dort also keine Zahl eingeben, sondern eine Variable für die ID des aktuellen Elements. Ich krieg das irgendwie nicht hin. Kann mir jemand weiterhelfen?

DANKE!

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Jan. 2015 11:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Im Grunde ist das ganz einfach, weil genau diese ID immer in der Adresse enthalten ist ( DispForm.aspx?ID=123 ). Du mußt sie also nur per JavaScript abholen. Du kannst dazu die Suchmaschine Deiner Wahl mit sowas füttern "javascript get url parameter" oder die Funktion von mir nehmen, die Du z:b: hier findest: http://blogs.evocom.de/af/archive/2013/04/26/link-zum-erstellen-eines-detaildatensatzes.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 22 Jan. 2015 11:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi

Vielen Dank für die Rückmeldung! Diesen Artikel kann ich als nächstes auch sehr gut gebrauchen! Die ID habe ich jetzt, wie in deinem Artikel erwähnt mittels JavaScript:

  var lookupId = getQueryStringParameter("ID");        

abgeholt. Die Funktion habe ich ebenfalls noch hinzugefügt. Nun möchte ich diese ID einfach als ParentID in meienm neuen Element angeben:

oListItem.set_item('ParentId', 'lookupId');

Es funktioniert aber leider nicht. Ich muss statt lookupId eine Zahl ein geben, dann klappt es... unten der gesamte Code, vielleicht kannst du mir weiter helfen:

<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script><script type="text/javascript">

function getQueryStringParameter(paramName) {

  var params = document.URL.split("?")[1].split("&"),

      i,

      singleParam;

  for (i = 0; i < params.length; i++) {

    singleParam = params[i].split("=");

    if (singleParam[0] == paramName)

      return singleParam[1];

  }

  return "";

}


function newSubTask(){

  var lookupId = getQueryStringParameter("ID");             
              
                var clientContext = new SP.ClientContext.get_current();
               
                var oList = clientContext.get_web().get_lists().getByTitle('Briefings');
                                                                                                              
                var itemCreationInfo = new SP.ListItemCreationInformation();
               
                this.oListItem = oList.addItem(itemCreationInfo);

                oListItem.set_item('Title', 'new subtask');
                                        
                oListItem.set_item('ParentId', 'lookupId');
                               
                oListItem.update();

                clientContext.load(oListItem);

        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this,


this.onQueryFailed));

}

function onQuerySucceeded() {

    alert('Item created: ' + oListItem.get_id());

}

function onQueryFailed(sender, args) {

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

}

</script><input id="Button1" onclick="newSubTask()" type="button" value="Teilaufgabe erstellen"/>

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 23 Jan. 2015 08:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn es mit einer Zahl funktioniert, dann mache aus dem String eine Zahl:

var strLookupId = getQueryStringParameter("ID");
var intLookupId = parseInt(strLookupId, 10);

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 26 Jan. 2015 08:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Leider funktioniert es immer noch nicht.

Benötige ich die Funktion "function getQueryStringParameter(paramName) { " überhaupt? Ich habe es nun mit folgendem Code versucht - der leider aber auch nicht klappt. Hat jemand eine Idee wie es funktionieren könnte?

<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script><script type="text/javascript">

 


function newSubTask(){

          
              
                var clientContext = new SP.ClientContext.get_current();
               
                var oList = clientContext.get_web().get_lists().getByTitle('Briefings');
                                                                                                              
                var itemCreationInfo = new SP.ListItemCreationInformation();
               
                this.oListItem = oList.addItem(itemCreationInfo);
               
                var strlookupId = getQueryStringParameter("ID");
               
                var intlookupId = parseInt(strlookupId, 10);  

               
                oListItem.set_item('Title', 'new subtask');
                                        
                oListItem.set_item('ParentId', intlookupId);
                               
                oListItem.update();

                clientContext.load(oListItem);

        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this,


this.onQueryFailed));

}

function onQuerySucceeded() {

    alert('Item created: ' + oListItem.get_id());

}

function onQueryFailed(sender, args) {

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

}

</script><input id="Button1" onclick="newSubTask()" type="button" value="Teilaufgabe erstellen"/>

 

Vielen Dank im Voraus!

Ohne Rang
49 Beiträge
Mel89 Als Antwort am 26 Jan. 2015 09:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe den Fehler gefunden! Beim Einfügen des Codes habe ich ParentID falsch geschrieben. So hat es nun geklappt.

 

Vielen Dank Andi für deine Hilfe!

 

 

Ohne Rang
49 Beiträge
Mel89 Als Antwort am 26 Jan. 2015 14:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Jetzt komme ich leider schon wieder nicht mehr weiter. Wenn ich nun den mittels js generierten Subtask bearbeite, möchte ich dort auch wieder ein Button haben, der mir direkt einen subtask erstellt. Mit der gleichen ParentID wie der bestehende subtask. Ich muss also nun die ParentID des subtasks herauskriegen. Habe es mal mit SPUtility versucht, der Wert liefert aber immer "undefinded". Bin leider noch totale js anfängerin...

 <script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script><script src="/csa/SiteCollectionDocuments/jquery-1.11.1.min.js"></script><script src="/csa/SiteCollectionDocuments/sputility.min.js"></script><script type="text/javascript">


function getQueryStringParameter(paramName) {

  var params = document.URL.split("?")[1].split("&"),

      i,

      singleParam;

  for (i = 0; i < params.length; i++) {

    singleParam = params[i].split("=");

    if (singleParam[0] == paramName)

      return singleParam[1];

  }

  return "";

}

         
                                      
var parentid = SPUtility.GetSPField('ParentID');
var parentidvalue = parentid.GetValue();
var intparentid = parseInt(parentidvalue, 10);
                                        
                                          
                       

function newSubTask(){

               
                var clientContext = new SP.ClientContext.get_current();
               
                var oList = clientContext.get_web().get_lists().getByTitle('Briefings');
                                                                                                                                                                                                                             
                var itemCreationInfo = new SP.ListItemCreationInformation();
               
                this.oListItem = oList.addItem(itemCreationInfo);
                                                                         
                oListItem.set_item('ParentID', intparentid);
                                               
                oListItem.update();

 

Danke im Voraus!!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Jan. 2015 14:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich kann Dir nur sagen, daß SPUtility normalerweise mit Lookups klarkommt. Ich nehme an, daß es ein ähnliches Problem wie oben ist, d.h. Du hast Dich wahrscheinlich beim Namen verschrieben.

Eine andere Möglichkeit wäre, die Methoden zum Setzen des Wertes zu verwenden. Du hast es ja geschafft, den Wert aus der URL auszulesen und zu setzen. Diese Methode kann man leicht abgewandelt auch zum Auslesen verwenden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 27 Jan. 2015 09:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Verschrieben habe ich mich (leider) nicht.

Ich komme einfach nicht an die ParentID des aktuellen Subtasks ran...

Wie hast du das mit dem Auslesen gemeint? Die Parent ID ist ja nicht in der URL drin...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 27 Jan. 2015 10:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Mel89"]Verschrieben habe ich mich (leider) nicht[/quote]

Vielleicht ein Problem mit dem sichtbaren Namen und dem internen Namen? Jede Spalte hat einen sichtbaren Namen, der sprachabhängig sein kann und nach Belieben geändert werden kann. Und sie hat einen unveränderlichen internen Namen und den solltest Du mit SPUtility.GetSPFieldByInternalName() verwenden.

[quote user="Mel89"]Wie hast du das mit dem Auslesen gemeint? Die Parent ID ist ja nicht in der URL drin[/quote]

Mit dem bestehenden Code holst Du ja die ID aus der URL und setzt sie in das Feld. Jetzt suchst Du das Feld und möchtest von ihm die ID haben...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 27 Jan. 2015 11:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

GetSPFieldByInternalName habe ich auch bereits versucht, hat leider auch nicht geklappt...

Habe nun recherchiert wie ich das mit dem Auslesen machen könnte - komme da aber überhaupt nicht weiter. Dafür verstehe ich zu wenig von JavaScript.

Ich kann nicht glauben dass wirklich nirgends steht, wie man an die parentID eines subtask rankommt...

 

Trotzdem vielen Dank für deine Hilfe!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 27 Jan. 2015 11:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe oben vergessen zu erwähnen, wie man an den internen Namen kommt. Wahrscheinlich ist der einfach anders als Du denkst ;-)

Klicke in den Listeneinstellungen auf die Spalte und in der Adresszeile des Browsers findest Du den internen Namen bei Field=...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 27 Jan. 2015 11:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das Problem dabei ist, dass die Parent ID nirgends als Spalte angezeigt wird. Ich kann da nicht irgendwo draufklicken. Diese Spalte ist irgendwo im Hintergrund. ABER sie existiert, da man sie braucht um überhaupt einen Subtask generieren zu können....

Im Quellcode habe ich "parentID" gefunden. Steht aber einfach so im Freien. Aber denke, dass dies der korrekte Name wäre.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 27 Jan. 2015 12:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Aaaah, jetzt erinnere ich mich, daß Du ja mit Aufgaben und Teilvorgängen rummachst. Ich muß zugeben, daß ich mich mit dem Feature noch nicht so ausführlich beschäftigt habe.

Wahrscheinlich gibt es da auf dem EditForm einfach gar kein Feld für die ParentID und dann kannst Du natürlich lange suchen. Die einzige Möglichkeit wäre dann das Element über das JavaScript Object Model zu laden und so die ParentID auszulesen. Da habe ich Dir aber kein Beispiel parat...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 4 Feb. 2015 11:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zum Abschluss dieses Forums: Es hat nun geklappt. Ich habe die ParentID vom übergeordneten Element gleich dem subtask mitgegeben und ins Feld "Hilfstext" geschrieben. Im Editform kann der Wert des Feldes aber nicht einfach mit Hilfe von SPUtility ausgelesen werden:

function newSubTask(){
        var clientContext = new SP.ClientContext.get_current();
        var oList = clientContext.get_web().get_lists().getByTitle('Briefings');
        var itemCreationInfo = new SP.ListItemCreationInformation();
        this.oListItem = oList.addItem(itemCreationInfo);

        var feld = SPUtility.GetSPField('Hilfstext');
        var value = $(feld.GetValue()).wrap('<p>').parent().find('div').text();


        var titel = SPUtility.GetSPField('Titel');
        var titelwert = titel.GetValue();
   
    if(value)
{
   oListItem.set_item( 'ParentID', value);
   oListItem.set_item( 'Title', titelwert);
   oListItem.set_item('Body', value); 
   oListItem.update();
   clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
else
{
alert('ParentID was not found in QueryString!');
}
}

function onQuerySucceeded() {
    var neueID = oListItem.get_id(); 
    alert('Teilaufgabe wurde erstellt. Sie werden gleich auf die soeben erstellte Aufgabe weitergeleitet.');
    window.location = '/csa/Lists/Briefings/EditForm.aspx?ID=' + neueID;
}

function onQueryFailed(sender, args) {
   alert('Request failed. ' + args.get_message() + 'n' + args.get_stackTrace());
}

//Get QueryStringByName
function getQueryStringByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
</script>
<input id="btnNewSubTask" type="button" value="Nächste Teilaufgabe" onclick="newSubTask();if (!PreSaveItem()) return false; WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ctl40$g_d4bd4b32_3af9_4de3_adb9_2ccaf99f5685$ctl00$toolBarTbl$RightRptControls$ctl00$ctl00$diidIOSaveItem&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))"  />

Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 11 Apr. 2018 06:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

bin ziemlich neu in dem Gebiet und wollte mal fragen, was ich machen muss um so einen Button auf unsere Seite zu bekommen. Ich habe den Code mal in der Ansichtsform mit Quellcode einbetten in dem Web-Part Script-Editor eingefügt, aber es macht nix.

Was muss ich beachten, ausser der Anpassung der Benennungen und wie genau muss ich vorgehen?

Danke.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Apr. 2018 09:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was soll der Button denn machen? Einen simplen Button bekommst Du in die Seite, wenn Du das hier in ein Script-Editor-Webpart einfügst:

<input type="button" value="Klick mich" />

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 12 Apr. 2018 07:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Genau das was oben steht.

 

Er soll zu der jeweils geöffneten Aufgabe im Ansichtsformular durch Klick auf einen Button eine (weitere) Unteraufgabe darunter erstellen und die Form NewItem aufrufen.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2018 08:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hast Du auch jQuery und SPUtility referenziert? https://archive.codeplex.com/?p=sputility

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 12 Apr. 2018 14:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

also anbei ist mien Code; was genau ist daran falsch? Meinst du mit referenzieren am Anfang die Definition?

Hier müsste er mir doch beim draufklicken ein neues Unteritem mit dem Titel new subtask machen, oder?

Vielen Dank!

<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<script type="text/javascript">


function newSubTask(){
                        
                var clientContext = new SP.ClientContext.get_current();          
                var oList = clientContext.get_web().get_lists().getByTitle('TestListe');                                                                                                             
                var itemCreationInfo = new SP.ListItemCreationInformation();              
                this.oListItem = oList.addItem(itemCreationInfo);              

                var strlookupId = getQueryStringParameter("ID");              
                var intlookupId = parseInt(strlookupId, 10);  
               
                oListItem.set_item('Titel', 'new subtask');                                       
                oListItem.set_item('ParentId', intlookupId);                              
                oListItem.update();

                clientContext.load(oListItem);

        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));

}

function onQuerySucceeded() {

    alert('Item created: ' + oListItem.get_id());

}

function onQueryFailed(sender, args) {

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

}

</script><input id="Button1" onclick="newSubTask()" type="button" value="Teilaufgabe erstellen"/>

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2018 15:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mit referenzieren meine ich genau das:

[quote user="Heinrich86"]<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>[/quote]

An sich sieht das vernünftig aus und es sollte eine der Meldungen über Erfolg oder Mißerfolg kommen. Wahrscheinlich gibt es einfach vorher schon einen Fehler, aber das kannst Du im Debugger ganz einfach herausfinden. Mache doch mal einen Breakpoint in die erste Zeile von newSubTask und gehe das dann zeilenweise durch.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 12 Apr. 2018 16:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Kannst du mir bitte nohc sagen, wie ich SPUtility referenzier?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2018 17:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In Deinem Code oben ist ja kein SPUtility mehr drin. Aber grundsätzlich geht das mit externen JS-Dateien immer gleich: runterladen, in einer SharePoint-Bibliothek parken (z.B. in Site Assets) und dann von dort referenzieren.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 16 Apr. 2018 11:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe meinen Code jetzt etwas abgeändert:

 

<script type="text/javascript" src="/_catalogs/masterpage/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">


 

function newSubTask(){

                var clientContext = new SP.ClientContext.get_current();
 
                var oList = clientContext.get_web().get_lists().getByTitle('TestListe');
 
                var itemCreationInfo = new SP.ListItemCreationInformation();
 
    this.oListItem = oList.addItem(itemCreationInfo);
 
                oListItem.set_item('Title', 'Neue Unteraufgabe: Bitte Ausfüllen!');
       
                var aufgabenId = oListItem.get_id();
   
    oListItem.set_item('ParentID', aufgabenId);
 
                oListItem.update();
 
                clientContext.load(oListItem);
 
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded2(aufgabenId)), Function.createDelegate(this,
 
 
this.onQueryFailed2));
 
}
 
function onQuerySucceeded2(aufgabenId) {
 
    alert('Teilvorgang erstellt, die ID lautet: ' + oListItem.get_id());
 
}
 
function onQueryFailed2(sender, args) {
 
   alert('Request failed. ' + args.get_message() + 'n' + args.get_stackTrace());

}

</script>

 

<input id="Button1" type="button" value="Neue Unteraufgabe" onclick="newSubTask()" />

 

Nun kommt folgende Meldung nach dem Ausführen, trotz erfolgreichem Debugging:

Request Failed. Das Listenelement konnte nicht hinzugefügt oder aktualisiert werden, weil doppelte Werte in den folgenden Feldern der Liste gefunden wurden: [Priorität].nundefined

Eine Idee? Danke.

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 16 Apr. 2018 16:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Fehlermeldung klingt, als ob für das Feld Priorität eindeutige Werte erzwungen würden. schau da mal nach. Kann aber auch sein, daß die Fehlermeldung Quatsch ist. Setze einfach mal einen Wert für Priorität, direkt nach oListItem.set_item('Title', ...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 17 Apr. 2018 09:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke schonmal soweit.

Nun funktioniert es weitesgehend, aber ich hätte gerne noch das Formular nach Erstellen geöffnet. Kannst du mir einen Befehl sagen, mit dem ich nach erstellen der Unteraufgabe diese automatisch öffnet zum Ausfüllen?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Apr. 2018 11:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schaue Dir die Adresse der Seite mal an. Sie geht ungefähr so:
...site/Lists/<NameDerListe>/EditForm.aspx?ID=4711

Statt 4711 setzt Du einfach die ID des von Dir neu erzeugten Elements (oListItem.get_id() ). Die ganze Adresse weist Du dann window.location zu und der Browser leitet dorthin um.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 17 Apr. 2018 12:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

tiptop habs mit windows.open gemacht.

kann man jetzt als Sahnehäubchen auch noch sofort das angezeigte Fenster im EditForm starten, sodass das Ausfüllen nicht vergessen werden kann?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Apr. 2018 16:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Verstehe ich nicht. Kannst Du die Anforderung nochmal anders formulieren?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 18 Apr. 2018 07:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

habs raus, aber viele Dank. Habs jetzt komplett fertig.

Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 3 Mai 2018 14:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo nochmal,

 

also habe jetzt die Buttons um automatisch Unteraufgaben zu erstellen, was prima funktioniert. Nun möchte ich, dass bestimmte Werte aus der Hauptaufgabe beim Erstellen einer Unteraufgabe automatisch übernommen werden. Dabei kommt bei mir aber immer die Fehlermeldung "SCRIPT5022: Die Eigenschaft oder das Feld wurde nicht initialisiert. Es ist keine Anforderung erfolgt, oder die Anforderung wurde nicht ausgeführt. Ggf. muss eine ausdrückliche Anforderung erfolgen.". Muss ich eventuell zweimal am Anfang den context initialisieren? Weiss jmd was an diesem Code nciht stimmen könnte:


function newSubTaskPPro(){


                var clientContext = new SP.ClientContext.get_current();
 
                var oList = clientContext.get_web().get_lists().getByTitle('Test');
 
                var itemCreationInfo = new SP.ListItemCreationInformation();
               
                var aufgabenId = GetUrlKeyValue("ID", false, location.href);
               
                var contenttypeId = GetUrlKeyValue("ContentTypeId", false, location.href);
               
                this.targetListItem = oList.getItemById(aufgabenId);
               
                clientContext.load(targetListItem);
               
                if (contenttypeId = "0x0100AC8EB51D82286E40A404D369B76BE4F20300613240674F94194BB90CC8C0C428DAA3") {
               
                var test = targetListItem.get_item('CategoryDescription');
               
                }
                  
  this.oListItem = oList.addItem(itemCreationInfo);
 
                oListItem.set_item('Title', 'Bitte Ausfüllen!');

                oListItem.set_item('Priority', '');

  oListItem.set_item('ParentID', aufgabenId);
               
                oListItem.set_item('CategoryDescription', test);
               
                oListItem.update();
 
                clientContext.load(oListItem);

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 Mai 2018 17:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nach dem ctx.load() in Zeile 7 fehlt ein ctx.executeQueryAsync(...)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
Heinrich86 Als Antwort am 4 Mai 2018 09:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke schonmal..Neues Problem. Habe den Code etwas umgeschrieben, da ich cniht wusste, ob man zwei ctx.executeQueryAsync nacheinander laufen lassen kann. Jetzt kommt aber folgender Fehler "SCRIPT5007: Die Eigenschaft "Async" eines undefinierten oder Nullverweises kann nicht abgerufen werden.":

 

<script language="javascript" type="text/javascript">

 

function newSubTaskPPro(){


                var clientContext = new SP.ClientContext.get_current();
 
                var oList = clientContext.get_web().get_lists().getByTitle('Test');
 
                var itemCreationInfo = new SP.ListItemCreationInformation();
               
                var aufgabenId = GetUrlKeyValue("ID", false, location.href);
               
                var contenttypeId = GetUrlKeyValue("ContentTypeId", false, location.href);
               
                var numaufgabenId = Number(aufgabenId);
               
                this.targetListItem = oList.getItemById(numaufgabenId);
               
                clientContext.load(targetListItem, 'CategoryDescription');
               
                clientContext.executeQuery.Async(Function.createDelegate(this, this.onQuerySucceeded1), Function.createDelegate(this, this.onQueryFailed));

                
               
}
               
function onQuerySucceeded1() {
            
                if (contenttypeId = "0x0100AC8EB51D82286E40A404D369B76BE4F20300613240674F94194BB90CC8C0C428DAA3") {
               
                var test = targetListItem.get_item('CategoryDescription');
               
                }
                  
  this.oListItem = oList.addItem(itemCreationInfo);
 
                oListItem.set_item('Title', 'Bitte Ausfüllen!');

                oListItem.set_item('Priority', '');

  oListItem.set_item('ParentID', aufgabenId);
               
                oListItem.set_item('CategoryDescription', test);
               
                oListItem.update();
 
                clientContext.load(oListItem);
 
                clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded2), Function.createDelegate(this, this.onQueryFailed));
               
}

 
function onQuerySucceeded2() {

                window.open("http://sps2.emea.festo.net/sites/fmtal/pro/P/Lists/Test/EditForm.aspx?ID="+oListItem.get_id()+"&ContentTypeId=0x0100AC8EB51D82286E40A404D369B76BE4F2030067F81E94B924C84B81CACB66F0B2E440")

}
 
 
function onQueryFailed(sender, args) {
 
                alert('Request failed. ' + args.get_message() + 'n' + args.get_stackTrace());

}


</script><strong class="ms-rteThemeFontFace-1">Unteraufgabe erstellen:</strong><input id="Button1" onclick="newSubTaskPPro()" type="button" value="P-Pro"/>

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Mai 2018 09:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du hast da einen Punkt zu viel. Es heißt einfach nur clientContext.executeQueryAsync - ohne Punkt zwischen Query und Async.

Mache Dich mal schlau, wie man JavaScript debuggen kann, z.B. durch die im Browser eingebauten Entwicklertools, die man durch F12 erreicht. Damit findest Du solche Fehler selbst ganz schnell.

Viele Grüße
Andi
af @ evocom de
Blog