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.




Autohosted app, custom user action

Dieser Beitrag hat 3 Antworten

Ohne Rang
11 Beiträge
Philip C erstellt 10 März 2014 14:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe eine autohosted app erstellt, im Appinstalled Event füge ich programmatisch Listen zum HostWeb hinzu. Eine dieser Listen benötigt im  Bereich von "Ribbon.Documents.New" einen Custom Action Button. Wenn ich den normal via Visual Studio erstelle ( Rechtsklick, Add new Item... ) funktioniert alles wunderbar solange die Liste bereits vorhanden ist.  Aber wenn ich die App neu installiere wird das nicht funktionieren.

Daher möchte ich das in C# programmatisch lösen

public void AddCustomAction(string targetListName,string xmlSchema, int sequence, string title, ClientContext ctx)

        {

            List targetList = GetList(targetListName);

            ctx.Load(targetList);

            UserCustomAction customAction = targetList.UserCustomActions.Add();

            customAction.Location = "CommanUI.Ribbon";

            customAction.Sequence = sequence;

            customAction.CommandUIExtension = xmlSchema;

            customAction.Title = title;

            customAction.Update();

            ctx.ExecuteQuery();

 

 

        }

 Ich hab für die CommanUIExtension einfach das xml von Visual Studio kopiert. Beim debuggen erhalte ich keinen Fehler aber mein Button erscheint mir trotzdem nicht.

 Was mache ich falsch? Irgendwelche Vorschläge?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2014 14:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Liste wird ebenfalls per Code erzeugt? Hast Du vorher (vor dem Hinzufügen der Custom Action) auch ein list.Update() mit ctx.ExecuteQuery() ?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
11 Beiträge
Philip C Als Antwort am 10 März 2014 15:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, die Liste wird ebenfalls per Code erzeugt.  Ich rufe meine Funktion die ich oben geposted habe nach folgendem Code auf

      newList.Update();

      clientcontext.Load(newList);

       clientContext.ExecuteQuery(); 

Die Liste ist im Hostweb erfolgreich angelegt. Wie bereits gesagt, wenn ich die App installiere und anschließend die Custom Actions via Visual Studio hinzufüge und die App nochmal deploy ( ohne die Listen zu löschen ) funktioniert alles, aber wenn ich das über Code machen will zeigt er nichts an. :(

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2014 15:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das müßte dann eigentlich funktionieren, aber offenbar ist irgendwas nicht aktuell. Ich würde mal nach dem Erzeugen der Liste quasi von vorne beginnen mit einem neuen ClientContext (ctx = new ClientContext) und einer neuen Liste (list = ctx.Web.Lists[...]). dadurch solltest Du wirklich neue Objekte mit allen aktuellen Daten haben.

Sorry, aber eine andere Idee habe ich auch nicht..

Viele Grüße
Andi
af @ evocom de
Blog